您可以在按钮点击次数上设置间隔时间吗?

时间:2010-01-30 00:41:34

标签: javascript jquery setinterval

$('.button').click();

上面的代码非常适合单击页面上的所有按钮,但是我试图每半个或每秒左右触发一次点击,直到jQuery对象发出循环为止。

$(function(){

   $('.button').each(function(){

          setInterval('$(this).click()', 500);

    });
});

有人能告诉我怎么做吗?上面的代码显然不起作用。我错过了什么吗?

4 个答案:

答案 0 :(得分:2)

请勿在{{1​​}}或setInterval()中使用字符串。始终传递函数对象:

setTimeout()

编辑:如果你想要的只是触发点击,这也可以更简单地表达为(感谢icambron):

$(function() {
    $('.button').each(function(){
        var button = $(this);
        setInterval(function() {button.click();}, 500);
    });
});

答案 1 :(得分:1)

$(function(){
   var buttons = $('.button');
   var len = buttons.length;
   var intr = new Array();
   buttons.each(function(i){
          var $this = $(this);
          var timeClick = function(){
             if(i < len ){
                $this.click();
             }
             else{
               clearInterval(intr[i]);
             }
          };

          intr[i] = setInterval(timeClick, 500);
    });
});

答案 2 :(得分:1)

这个怎么样?

setInterval(function(){ $('.button').click();},500);

答案 3 :(得分:1)

您可以构建一个按顺序执行点击的功能,每隔N指定的毫秒超时点击一次,逐个迭代匹配的元素:

用法:

clickQueue($('.button'), 500);

功能:

var clickQueue = function ($els, timeout) {
  var n = $els.length, i = 0;

  function click () { // internal function
    $els.eq(i++).click(); // click the element and increment i
    if (i < n){
      setTimeout(click, timeout); // execute again if possible
    }
  }
  click(); // invoke for first time
};
相关问题