双击事件失效解决办法

Posted callmeguxi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了双击事件失效解决办法相关的知识,希望对你有一定的参考价值。

某些时候,双击事件会失效,模拟办法解决双击失效后,而同时我又不想在该元素上触发两次单击事件,解决办法如下:

var dbclickTime={
prev:0, next:0//模拟触发双击
};
var clickConflict={//解决单击事件和双击事件的冲突
_timeout:null,
set:function (fn) {
this.clear();
this._timeout=window.setTimeout(fn,400);
},
clear:function () {
if(this._timeout){
window.clearTimeout(this._timeout);
this._timeout=0;
}
}
};

//code 事件托管
document.addEventListener("click",function (e) {
if(dbclickTime.prev==0){
dbclickTime.prev=dbclickTime.next=new Date().getTime();
}else{
dbclickTime.prev=dbclickTime.next;
dbclickTime.next=new Date().getTime()
}

if(true){//托管的元素
clickConflict.set(function () {
          console.log("click");
          //do something
        });
}

if(dbclickTime.next-dbclickTime.prev<300){
console.log("dblick");
clickConflict.clear();
if(true){//托管的元素
//do something
}
}
},true);

以上是关于双击事件失效解决办法的主要内容,如果未能解决你的问题,请参考以下文章

(原来jq点击会失效)jq---jquery点击事件失效原因和解决办法

append()方法生成的元素绑定的事件失效解决办法

vue中router-link的click事件失效的解决办法

Android 中listview的item点击事件失效了的解决办法

iOS开发:didSelectRowAtIndexPath:方法失效解决办法

jquery中动态添加的标签绑定的click事件失效的解决办法