Question Comment sortir de jQuery chaque boucle


Comment puis-je sortir d'un jQuery each boucle?

J'ai essayé:

 return false;

Dans la boucle mais cela n'a pas fonctionné. Des idées?

METTRE À JOUR Bien que la portée initiale de la question ne soit pas claire, prenez garde que la réponse choisie ne couvre que la $.each() fonction mais pas le $().each.


484
2017-11-23 17:44


origine


Réponses:


À break une $.each boucle, vous devez retourner false dans le rappel de la boucle.

Retour true passe à la prochaine itération, équivalente à une continue dans une boucle normale.

$.each(array, function(key, value) { 
    if(value === "foo") {
        return false; 
    }
});

Sortir d'un $().each boucle est couverte Comment casser / quitter une fonction each () dans JQuery?


875
2017-11-23 17:46



Selon la documentation return false; devrait faire le travail. 

Nous pouvons casser la boucle $ .each () [..] en rendant la fonction de rappel   return false.

Renvoie false dans le rappel:

function callback(indexInArray, valueOfElement) {
  var booleanKeepGoing;

  this; // == valueOfElement (casted to Object)

  return booleanKeepGoing; // optional, unless false 
                           // and want to stop looping
}

BTW, continue fonctionne comme ceci:

Renvoyer non-false est la même chose qu'une instruction continue dans une boucle for; il passera immédiatement à la prochaine itération.


51
2017-11-23 17:49



J'ai créé un Fiddle pour la réponse à cette question parce que la réponse acceptée est incorrecte et c'est le premier thread StackOverflow retourné par Google concernant cette question.

Pour sortir d'un $ .each vous devez utiliser return false;

Voici un violon le prouvant:

http://jsfiddle.net/9XqRy/


31
2017-11-08 01:15



Je suis tombé sur la situation où j'ai rencontré une condition qui a brisé la boucle, mais le code après la fonction .each () est toujours exécuté. J'ai alors placé un drapeau à "vrai" avec une vérification immédiate du drapeau après la fonction de .each () pour s'assurer que le code qui a suivi n'a pas été exécuté.

$('.groupName').each(function() {
    if($(this).text() == groupname){
        alert('This group already exists');
        breakOut = true;
        return false;
    }
});
if(breakOut) {
    breakOut = false;
    return false;
} 

23
2018-01-24 23:10



"each" utilise la fonction de rappel. La fonction de rappel s'exécute indépendamment de la fonction d'appel, il n'est donc pas possible de revenir à la fonction d'appel depuis la fonction de rappel.

utiliser pour la boucle si vous devez arrêter l'exécution de la boucle en fonction de certaines conditions et rester dans la même fonction.


8
2017-11-25 05:58