一直以为JavaScript中单击和双击是独立的,直到有一天,遇到了单双击执行不同的代码时,才发现。。。
毕竟双击就是两次单击,所以在双击的第一击时,会触发单击的事件的,但是在第一击时通过setTimeout来延迟单击执行的代码,当延迟的时间内如有第二击,那就是双击了吧,在双击监听那里停掉单击延迟执行的代码,这样就能区分开单击双击事件了,不过注意设置延迟的时间要适合。
//定义setTimeout执行方法
var Timeone = null;
$('body').click(function() {
// 取消上次延时未执行的方法
clearTimeout(Timeone);
//执行延时
Timeone = setTimeout(function() {
//do function在此处写单击事件要执行的代码
console.log(111);
}, 500);//延迟的时间为500ms
});
$('body').dblclick(function() {
// 取消上次延时未执行的方法
clearTimeout(Timeone);
//双击事件的执行代码
console.log(222);
});
代码来自网上并根据自己需要加以更改,侵删。