ページにボタンがあり、1秒に1回最大で起動したい。つまり、ユーザーが狂人のように5秒間クリックすると、5回しか実行されません。Stackをグーグル検索して検索しましたが、結果がありません。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 に答える