Comment sortir d'une boucle jQuery each
?
J'ai essayé:
return false;
Dans la boucle mais cela n'a pas fonctionné. Des idées?
Pour break
a $.each
ou $(selector).each
boucle, vous devez renvoyer false
dans le rappel de boucle.
Le renvoi de true
passe à la prochaine itération, ce qui équivaut à un continue
dans une boucle normale.
$.each(array, function(key, value) {
if(value === "foo") {
return false; // breaks
}
});
// or
$(selector).each(function() {
if (condition) {
return false;
}
});
Selon la documentation, return false;
devrait faire l'affaire.
Nous pouvons casser la boucle $ .each () [..] en renvoyant la fonction de rappel à 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 identique à une instruction continue dans une boucle for; il passera immédiatement à la prochaine itération.
J'ai créé un Fiddle pour la réponse à cette question, car la réponse acceptée est incorrecte. Il s'agit en outre du premier thread StackOverflow renvoyé par Google concernant cette question.
Pour sortir d'un $ .each, vous devez utiliser return false;
Voici un Fiddle le prouvant:
Je suis tombé sur une situation où je rencontrais une condition qui cassait la boucle, mais le code après la fonction .each () était toujours exécuté. J'ai ensuite défini un indicateur sur "true" avec une vérification immédiate de l'indicateur après la fonction .each () pour garantir 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;
}
"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 à partir de la fonction de rappel.
utilisez for for si vous devez arrêter l'exécution de la boucle en fonction de certaines conditions et rester dans la même fonction.
Je sais que c'est une question assez ancienne mais je n'ai vu aucune réponse, ce qui précise que pourquoi et quand il est possible de rompre avec le retour.
Je voudrais l'expliquer avec 2 exemples simples:
1. Exemple: Dans ce cas, nous avons une simple itération et nous voulons rompre avec return true, si nous pouvons trouver les trois.
function canFindThree() {
for(var i = 0; i < 5; i++) {
if(i === 3) {
return true;
}
}
}
si nous appelons cette fonction, elle retournera simplement le vrai.
2. Exemple Dans ce cas, nous souhaitons itérer avec jquery's chaque fonction , qui prend une fonction anonyme en paramètre.
function canFindThree() {
var result = false;
$.each([1, 2, 3, 4, 5], function(key, value) {
if(value === 3) {
result = true;
return false; //This will only exit the anonymous function and stop the iteration immediatelly.
}
});
return result; //This will exit the function with return true;
}