正常情况下触发双击dblclick事件时会同时触发两遍单击click事件,这肯定不是我们想要的结果,那么如何避免伴随触发click事件呢?
浏览器监听双击事件的机制是,有没有在一定时间内监听到两次连续的单击事件,从这个角度出发,我们可以对单击事件进行延时执行,若在一定时间内没有第二次单击事件,则执行单击事件代码;若监听到了第二次单击事件,则执行双击事件,而不执行单击事件。
实例代码如下:
<!DOCTYPE html>
<html lang="zh-cn">
<title>单双击事件测试</title>
</head>
<body>
<div onclick="test('one')" ondblclick="test()">点击测试</div>
</body>
<script>
var timeId;
function test(type) {
clearTimeout(timeId);
if(type=='one'){
timeId = setTimeout(function () {
alert("单击");
}, 250);
}else{
alert("双击");
}
}
</script>
</html>