双击事件(dblclick)时,不触发单击事件(click)

执行双击事件(dblclick)时,会触发两次单击事件(click)。

即一个标签元素(如div等),如果元素同时绑定了单击事件(click)和双击事件(dblclick),执行双击事件(dblclick)时会触发两次单击事件(click)。

先看一下点击事件的执行顺序:

单击(click):
mousedown,mouseout,click;
双击(dblclick):
mousedown,mouseout,click, 
mousedown,mouseout,click,
dblclick;

利用 setTimeout 来解决 

//定义setTimeout执行方法
var TimeFn = null;

$('div').click(function () {
    // 取消上次延时未执行的方法
    clearTimeout(TimeFn);
    //执行延时
    TimeFn = setTimeout(function(){
        //do function在此处写单击事件要执行的代码
    },300);
});

$('div').dblclick(functin () {
     // 取消上次延时未执行的方法
    clearTimeout(TimeFn);
    //双击事件的执行代码
})

至此,能一定程度上避免双击(dblclick)时触发单击(click)。

 

参考:http://www.cnblogs.com/wyblog/archive/2011/12/15/2289219.html