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

Focus / Blur仅适用于表单元素,例如 input、select 或 textarea。

你需要的是stopPropagation

...或类似的东西:

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

演示

于 2013-02-07T13:18:18.003 回答