2010-12-05 67 views
2
$('#element').dblclick(function(e){ 
    console.log("event"); 
});    

當我以非常快的速度單擊該元素時,它會多次顯示該事件。但是我想讓用戶連續不斷地雙擊,可能會跳過它1秒,我該怎麼做?謝謝。如何避免連續雙擊?

回答

2
var click_allowed = true; 
$('#element').dblclick(function(e){ 
    if (!click_allowed) return; 
    console.log("event"); 
    click_allowed = false; 
    window.setTimeout(function() { 
    click_allowed = true; 
    }, 1000); 
} 
+1

TRUE;和`假`必須寫成小寫。否則你會得到一個參考錯誤。 – jAndy 2010-12-05 15:48:59

0
var lastClick = 0; 
$('#element').dblclick(function(e){ 
    var time = (new Date()).getTime(); 
    if(time > lastClick + 1000) { 
    lastClick = time; 
    console.log("event"); 
    } 
} 
2

您可以使用.one以確保您的事件處理程序只運行一次,然後就可以重新綁定,一旦有足夠的時間已經過去(live demo):

function dblclickHandler(e){ 
    console.log("event"); 
    setTimeout(setHandler, 1000); 
} 

function setHandler() { 
    $('#element').one('dblclick', dblclickHandler); 
} 

setHandler();