如果一个按钮,单击触发的事件跟双击触发的是不同的业务,那么这里介绍的就是如何处理双击的过程中不触发单击事件的方法
<html>
<meta charset="UTF-8" />
<button onclick="testClick()" style="width: 150px;">tapMe1</button>
</html>
<script>
var funcTap = function() {
console.log("tap")
}
var funcDoubleTap = function() {
console.log("doubleTap")
}
var diffTapAndDbTap = (function() {
var firstTap = 0;
var tapLock = 0;
var exeDbTap = 0;
return function(funcTap, funcDoubleTap) {
if(1 == exeDbTap) { //如果双击事件执行过,那么重置所有状态位
firstTap = 0;
tapLock = 0;
exeDbTap = 0;
}
if(firstTap == 0) { //0代表单击状态位
firstTap = 1;
setTimeout(function() {
if(tapLock == 0) { //单击没有被锁住,则执行单击事件
funcTap();
}
firstTap = 0;
}, 500)
return;
}
if(firstTap == 1) { //1代表单击状态位
tapLock = 1; //锁住单击事件
funcDoubleTap();
exeDbTap = 1; //表示双击事件已经执行过
}
}
})()
var testClick = function() {
diffTapAndDbTap(funcTap, funcDoubleTap);
}
</script>