touchend事件被触发两次

时间:2017-12-27 14:02:05

标签: javascript

这是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,则此函数会被调用两次。那是为什么?

1 个答案:

答案 0 :(得分:1)

如果事件类型为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();
    });