Sow nothing reap nothing

同时绑定单击和双击事件冲突处理办法

已有2,528次关注

双击(dblclick)的流程是:mousedown,mouseout,click,mousedown,mouseout,click,dblclick; 在双击事件(dblclick),触发的两次单击事件(click)中,第一次的单击事件(click)会被屏蔽掉,但第二次不会。也就是说双击事件(dblclick)会返回一次单击事件(click)结果和一次双击事件(dblclick) 结果。而不是一次双击事件(dblclick)结果和两次单击事件结果(click)。 所以可以使用计时的方式去除掉一个多余的单击事件就行了。

$(function(){
    var TimeFn = null;
    $('.testdiv').click(function () {
        clearTimeout(TimeFn);
        TimeFn = setTimeout(function(){
            alert('click')
        },300);
    });
    
    $('.testdiv').dblclick(function () {
        clearTimeout(TimeFn);
        alert('dbclick');
    })

});

已自动关闭评论