一:原理: 先看一下點擊事件的執行順序:
點選(click):mousedown,mouseout,click;
雙擊(dblclick) :mousedown,mouseout,click , mousedown,mouseout,click,dblclick;
在雙擊事件(dblclick),觸發的兩次點擊事件(click)中,第一次的點擊事件(click)會被屏蔽掉,但第二次不會。也就是說雙擊事件(dblclick)會回傳一次點選事件(click)結果和一次雙擊事件(dblclick) 結果。而不是一次雙擊事件(dblclick)結果和兩次點擊事件結果(click)。
如此這般的話,只需消滅掉多餘的一次點擊事件(click),這個問題就解決了。
setTimeout
二:程式碼: 複製程式碼
複製程式碼
複製程式碼
複製程式碼
複製程式碼
複製碼如下: //定義setTimeout執行方法var TimeFn = null; $('div').click(function () { // 取消上次延時未執行的方法clearTimeout(TimeFn); //執行延時TimeFn = setTimeout(function(){ //do function在此寫入事件要執行的程式碼},300); }); $('div').dblclick(functin () { // 取消上次延遲未執行的方法clearTimeout(TimeFn); //雙擊事件的執行程式碼})