$('#element').dblclick(function(e){
console.log("event");
});
当我以非常快的速度点击该元素时,它会多次显示该事件。但我希望用户不要连续双击,可能会跳过它1秒钟,我该怎么办呢?谢谢。
答案 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");
}
}