2010-12-05 68 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();