jQuery 雙擊事件(dblclick)
阿新 • • 發佈:2018-12-18
在jQuery的事件繫結中,執行雙擊事件(dblclick)時能觸發兩次單擊事件(click)。即一個標籤元素(如div等),如果元素同時綁定了單擊事件(click)和雙擊事件(dblclick),那麼執行單擊事件(click)時,不會觸發雙擊事件(dblclick), 執行雙擊事件(dblclick)時卻會觸發兩次單擊事件(click)。
先看一下點選事件的執行順序:
單擊(click):mousedown,mouseout,click; 雙擊(dblclick):mousedown,mouseout,click , mousedown,mouseout,click,dblclick;
在雙擊事件(dblclick),觸發的兩次單擊事件(click)中,第一次的單擊事件(click)會被遮蔽掉,但第二次不會。也就是說雙擊事件(dblclick)會返回一次單擊事件(click)結果和一次雙擊事件(dblclick) 結果。而不是一次雙擊事件(dblclick)結果和兩次單擊事件結果(click)。
如此這般的話,只需消滅掉多餘的一次單擊事件(click),這個問題就解決了。
setTimeout
在jQuery的$(document).ready(function(){})裡面直接開寫:
1 //定義setTimeout執行方法 2 var TimeFn = null; 3 4 $('div').click(function () { 5 // 取消上次延時未執行的方法 6 clearTimeout(TimeFn); 7 //執行延時 8 TimeFn = setTimeout(function(){ 9 //do function在此處寫單擊事件要執行的程式碼 10 },300); 11 }); 12 13 $('div').dblclick(functin () { 14 // 取消上次延時未執行的方法 15 clearTimeout(TimeFn); 16 //雙擊事件的執行程式碼17 })
從測試結果來看,如果前後兩次點選的時間在 300ms 左右的時候,還是很容易出現 click 和 dblclick 事件被“同時”呼叫的情況,而如果間隔的時間更短或更長,則只會有 click 或 dblclick 事件。
至此,能一定程度上避免雙擊(dblclick)時觸發單擊(click)。