0


jQueryベースの選択ボックスを作成しました。

iPhoneのぼかし機能(MacbookのiOSシミュレーターでテストしました)を除いて、すべて正常に動作します。Androidでは正常に動作します。これが私が書いたものです。

$('.listSelect a').on('click',function(e){
    var text = $(this).text();
    $('.listSelected').removeAttr('tabindex').removeClass('focus').blur().find('strong').text(text);
    //$('.listSelect').slideUp('fast');
    e.preventDefault();
});
$('.listSelected').on('click',function(e){
    var attr = $(this).attr('tabindex');
    if(typeof attr == 'undefined' || attr == false){
        $(this).attr('tabindex','0');
    } else {
        console.log('Yes!');
        $(this).removeAttr('tabindex');
    }
    $(this).toggleClass('focus').focus();
    $('.listSelect').slideToggle('fast');
}).on('blur',function(){
    $('.listSelect').slideUp('fast');
    $(this).removeAttr('tabindex').removeClass('focus');
});

これが私のコードです:http://jsfiddle.net/nori2tae/jXTTh/

ドロップダウンリストの外側の任意の場所をタップする(フォーカスアウトする)だけです。リストはiPhoneに戻りたくありません。

どんなmodの提案もありがたいです。ありがとう!

4

1 に答える 1

2

フォーカス/ぼかしは、入力、選択、テキストエリアなどのフォーム要素にのみ適用できます。

必要なのはstopPropagationです。

...またはこのようなもの:

$(document).on('touchend', function(e) {
    if ( !$('body').has(e.target).length ) {
        $('.listSelect').slideUp('fast');
    }
});

デモ

于 2013-02-07T13:18:18.003 に答える