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

Wenn ich auf das Element bei einem sehr schnellen Klick klicke, wird das Ereignis mehrmals angezeigt. Aber ich möchte, dass der Benutzer dauerhaft Doppelklick verhindert, kann es für 1 Sekunde überspringen, wie kann ich das tun? Vielen Dank.Wie vermeidet man, ständig doppelt zu klicken?

Antwort

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' und' false "muss in Kleinbuchstaben geschrieben werden. Andernfalls erhalten Sie einen Referenzfehler. – jAndy

+0

Danke für die Benachrichtigung. Behoben. – PeeHaa

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

können Sie .one verwenden, um sicherzustellen, dass Ihr Event-Handler nur einmal ausgeführt wird, und dann können Sie rebind es einmal genug Zeit verstrichen ist (live demo):

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

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

setHandler(); 
Verwandte Themen