背景:
单击过快或使用双击后,会优先触发单击动作,可能出现执行多次单击动作,而规避方案就是:当出现双击动作时,不执行任何单击动作。
原理:延时执行单击动作
方案1:
var flag = true; function clickHandle(e) { e = e || window.event; if (flag) { flag = false; //此处为要执行的函数; setTimeout(function() { flag = true; }, 250) } else { e.preventDefault(); } }
方案2:
var timer = null; function clickHandle(e) { clearTimeout(timer); timer = setTimeout(function() { //初始化一个延时 //此处为要执行的函数; // console.log(e); }, 250) }; function dblclick() { //双击事件会先触发两次单击事件,然后再执行双击事件,使用清除定时器来达到双击只执行双击事件的目的 clearTimeout(timer); console.log("2"); };