执行双击事件(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