Можете ли вы установить интервал для нажатия кнопок? - PullRequest
1 голос
/ 30 января 2010
$('.button').click();

Приведенный выше код прекрасно работает для одновременного нажатия всех кнопок на странице, но я пытаюсь отключать щелчки каждые полторы секунды или около того, пока объект jQuery не зациклится, т.е.

$(function(){

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

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

    });
});

Может кто-нибудь сказать мне, как я могу это сделать? приведенный выше код явно не работает. Я что-то упустил?

Ответы [ 4 ]

2 голосов
/ 30 января 2010

Не используйте строки в setInterval() или setTimeout(). Всегда передавать функциональные объекты:

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

РЕДАКТИРОВАТЬ: Если все, что вам нужно, это нажать кнопку, это также может быть выражено более просто как (спасибо icambron):

$(function() {
    $('.button').each(function(){
        setInterval($(this).click, 500);
    });
});
1 голос
/ 30 января 2010

Вы можете создать функцию для последовательного выполнения щелчков, щелкнув каждый 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
};
1 голос
/ 30 января 2010

Как насчет этого?

setInterval(function(){ $('.button').click();},500);
1 голос
/ 30 января 2010
$(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);
    });
});
...