我在页面上有一个按钮,我希望每秒最多触发一次。这意味着如果用户像疯子一样点击它五秒钟,它将只执行五次。我一直在谷歌搜索和搜索堆栈,没有结果。还尝试了Alman的油门/去抖动插件,但似乎不适用于点击。
答案 0 :(得分:0)
为什么不在按钮的点击事件中禁用按钮1秒钟?
$('#my_button').click(function() {
/*
your logic here
*/
// disable the button for 1 second
$(this).attr('disabled', 'disabled').delay(1000).removeAttr('disabled');
}
答案 1 :(得分:0)
创建一个结束事件的限制,除非自上次点击以来已经过了1秒。
var clicked = false;
$(element).click(function(e){
e.preventDefault();
if (clicked) {
return;
}
clicked = true;
console.log("Do Stuff");
setTimeout(function(){
clicked = false;
},1000);
});
或者您可以使用数据属性来避免额外的变量:
$(element).click(function(e){
e.preventDefault();
if ($(this).data("clicked")) {
return;
}
$(this).data("clicked",true);
console.log("Do Stuff");
setTimeout(function(){
$(this).data("clicked",false);
},1000);
}).data("clicked",false);
答案 2 :(得分:0)
使用计时器
var clicked = false;
setInterval(function(){
clicked = false;
},5000);
if($('.button').click(function(){
if(!clicked){
do job;
clicked = true;
}
});
答案 3 :(得分:0)
请改为尝试:
$(function(){
var currentTime = (new Date()).getTime();
$("input:button").click(function(){
var nowTime = (new Date()).getTime();
var diff = Math.abs((nowTime - currentTime)/1000);
if(diff < 1)
return;
currentTime = nowTime;
// do your stuff
});
});