我在页面上有一个按钮,我希望每秒最多被触发一次。这意味着如果用户像疯子一样点击它五秒钟,它只会被执行五次。我一直在谷歌搜索和搜索堆栈,没有结果。还尝试了 Alman 的油门/去抖动插件,但似乎不适用于点击。
问问题
1301 次
4 回答
1
使用计时器
var clicked = false;
setInterval(function(){
clicked = false;
},5000);
if($('.button').click(function(){
if(!clicked){
do job;
clicked = true;
}
});
于 2012-11-20T19:02:31.770 回答
0
为什么不在按钮的单击事件中禁用按钮 1 秒?
$('#my_button').click(function() {
/*
your logic here
*/
// disable the button for 1 second
$(this).attr('disabled', 'disabled').delay(1000).removeAttr('disabled');
}
于 2012-11-20T19:01:01.127 回答
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);
于 2012-11-20T19:02:11.133 回答
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
});
});
于 2012-11-20T19:09:26.447 回答