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

上記のコードは、ページ上のすべてのボタンを一度にクリックするのにうまく機能しますが、jQuery オブジェクトがループするまで、0.5 または 2 秒ごとにクリックを開始しようとしています。

$(function(){

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

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

    });
});

誰かが私にこれを行う方法を教えてもらえますか? 上記のコードは明らかに機能しません。何か不足していますか?

4

4 に答える 4

2

setInterval()またはで文字列を使用しないでくださいsetTimeout()。常に関数オブジェクトを渡します:

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

編集:クリックをトリガーすることだけが必要な場合は、これをより簡単に次のように表現することもできます (thanks icambron):

$(function() {
    $('.button').each(function(){
        setInterval($(this).click, 500);
    });
});
于 2010-01-30T00:45:56.040 に答える
1

クリックを順番に実行する関数を作成できます。N指定されたミリ秒ごとのタイムアウトでクリックし、一致した要素を 1 つずつ繰り返します。

使用法:

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
};
于 2010-01-30T01:08:13.787 に答える
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);
    });
});
于 2010-01-30T00:50:35.183 に答える
1

これはどうですか?

setInterval(function(){ $('.button').click();},500);
于 2010-01-30T00:51:58.987 に答える