Fire函数每秒只点击一次(jQuery)

时间:2012-11-20 18:56:35

标签: jquery

我在页面上有一个按钮,我希望每秒最多触发一次。这意味着如果用户像疯子一样点击它五秒钟,它将只执行五次。我一直在谷歌搜索和搜索堆栈,没有结果。还尝试了Alman的油门/去抖动插件,但似乎不适用于点击。

4 个答案:

答案 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
    });
});