雙擊時如何實現不觸發單擊事件?

單擊和雙擊事件的執行順序:

   

單擊(click):mousedown , mouseout , click;

雙擊(dblclick):mousedown , mouseout , click , mousedown , mouseout , click , dblclick;

 

雙擊事件(dblclick),觸發的兩次單擊事件(click)中,第一次的單擊事件(click)會被屏蔽掉,但第二次不會。也就是說雙擊事件(dblclic)會返回一次單擊事件(click)結果和一次雙擊事件(dblclick)結果。而不是一次雙擊事件(dblclick)結果和兩次單擊事件結果(click)。

如此這般的話,只需消滅掉多餘的一次單擊事件(click),這個問題就解決了。

解決方法如下:

//定義setTimeout執行方法
var time=null;
$('#div1').click(function(){
    //取消上次延時未執行的方法
    clearTimeout(time);
    //執行延時
    time=setTimeout(function(){
        //do function在此處寫單擊事件要執行的代碼
    },300);
});
 
$("#div1").dblclick(function(){
    //取消上次延時未執行的方法
    clearTimeout(time);
    //雙擊事件的執行代碼
})

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章