如何避免连续双击?

时间:2010-12-05 15:24:28

标签: javascript jquery javascript-events

$('#element').dblclick(function(e){  
    console.log("event");
});               

当我以非常快的速度点击该元素时,它会多次显示该事件。但我希望用户不要连续双击,可能会跳过它1秒钟,我该怎么办呢?谢谢。

4 个答案:

答案 0 :(得分: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 :(得分:2)

您可以使用.one来确保您的事件处理程序只运行一次,然后您可以在经过足够的时间后重新绑定它(live demo):

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

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

setHandler();

答案 2 :(得分:0)

我会使用doTimeout plugin,特别是去抖功能:http://benalman.com/code/projects/jquery-dotimeout/examples/debouncing/。尝试我发布的第二个链接上的第一个例子。然后,只需将其修改为双击而不是keyup

答案 3 :(得分:0)

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