? ? ? 作為一個前端碼農,你可能和我一樣遇到過這樣的問題:給一個DOM元素同時綁定click和dbclick事件,結果發現在雙擊時觸發了兩次單擊事件。如下,我有一個<p class="test">的元素,綁定事件后效果如下:
為解決這個問題還是得先了解一下兩種事件的機制:
?1、單擊(click):mousedown、mouseup、click
2、雙擊(dbclick):mousedown、mouseup、click、mousedown、mouseup、click
由此,我們可以知道一個雙擊事件是由兩個單擊事件組成。因而我們可以利用時間延遲,在觸發單擊事件后的一段時間內,禁止再次觸發。以下是具體代碼:
var timer =null;
$('.test').on('click',function() {
clearTimeout(timer)
timer =setTimeout(function() {
console.log('click')
},300);
});
$('.test').dblclick(function() {
console.log('dbclick')
});
效果圖: