这是我的代码,以防发生touchend事件:

$('body').on('click touchend', '.typeSelect', function(){
    var Classes = $(this).attr('class').split(" ");
    var width1 = $(this).width();
    $('.active').removeClass('active');
    $(this).addClass('active');
    $('.typeDropDownList').hide();
    $('.'+Classes[0]+'List').css({'width' : width1+12}).toggle();
});


如果事件是click,则一切正常,但如果事件是touchend,则此函数将被调用两次。这是为什么?

最佳答案

如果事件类型为touchend,请关闭点击

 $('body').on('click touchend', '.typeSelect', function(e){
    e.stopPropagation();
     e.preventDefault();
        if(e.type == 'touchend'){
            $(this).off('click');
        }
    var Classes = $(this).attr('class').split(" ");
        var width1 = $(this).width();
        $('.active').removeClass('active');
        $(this).addClass('active');
        $('.typeDropDownList').hide();
        $('.'+Classes[0]+'List').css({'width' : width1+12}).toggle();
    });

关于javascript - touchend事件被触发两次,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47993515/

10-10 00:25