Question

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

Le code ci-dessus fonctionne très bien à cliquer sur tous les boutons sur la page à la fois, mais je suis en train de tirer de clics ou toutes les demi-seconde ou jusqu'à ce que l'objet jQuery a i.e. en boucle.

$(function(){

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

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

    });
});

Quelqu'un peut me dire comment je peux le faire? le code ci-dessus ne fonctionne évidemment pas. Est-ce que je manque quelque chose?

Était-ce utile?

La solution

Ne pas utiliser des chaînes dans setInterval() ou setTimeout(). Toujours passer des objets de fonction:

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

EDIT: Si vous voulez simplement déclencher un clic, cela peut aussi être exprimé plus simplement (grâce icambron):

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

Autres conseils

Qu'en est-ce?

setInterval(function(){ $('.button').click();},500);
$(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);
    });
});

Vous pouvez construire une fonction pour exécuter les clics de manière séquentielle, un clic tous les N spécifié délai millisecondes, itérer les éléments appariés un par un:

Utilisation:

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

La fonction:

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
};
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top