Comment sortir de jQuery chaque boucle

comment sortir d'une boucle jquery each ?

j'ai essayé:

 return false;

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

UPDATE même s'il n'est pas clair quelle était la portée originale de la question, veuillez prendre garde que la réponse choisie ne couvre que la fonction $.each() mais pas la fonction $().each .

494
demandé sur Alex R 2009-11-23 20:44:37

6 réponses

à break a $.each boucle, vous devez retourner false dans la boucle de rappel.

retourne true saute à la prochaine itération, équivalent à un continue dans une boucle normale.

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

Casser $().each la boucle est couvert de Comment casser/sortie de chaque fonction de() en JQuery?

894
répondu CMS 2018-04-28 23:55:39

selon la documentation return false; devrait faire le travail.

on peut casser les $.chacun() de la boucle [..] en faisant de la fonction de rappel retourne la valeur false.

Return 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:

retourner non-false est la même chose qu'un État continue dans une boucle for; il saute immédiatement à l'itération suivante.

52
répondu powtac 2016-07-14 12:28:32

j'ai créé un violon pour la réponse à cette question parce que la réponse acceptée est incorrecte et c'est le premier fil de StackOverflow retourné de Google concernant cette question.

pour sortir d'un $.chacun vous devez utiliser return false;

voici un violon qui le prouve:

http://jsfiddle.net/9XqRy /

32
répondu iamjpg 2013-11-08 01:15:15

je suis tombé sur la situation où j'ai rencontré une condition qui a cassé la boucle, cependant le code après le .chaque fonction() toujours exécuté. J'ai ensuite définir un indicateur de "vrai" avec un contrôle immédiat de l'indicateur après l' .chaque fonction () pour s'assurer que le code qui suit n'est pas exécuté.

$('.groupName').each(function() {
    if($(this).text() == groupname){
        alert('This group already exists');
        breakOut = true;
        return false;
    }
});
if(breakOut) {
    breakOut = false;
    return false;
} 
24
répondu David Aguirre 2014-01-24 23:10:32

"each" utilise la fonction callback. Fonction de rappel 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.

utiliser pour boucle si vous devez arrêter l'exécution de boucle basée sur une certaine condition et rester dans la même fonction.

8
répondu Sumit Jambhale 2015-11-25 05:58:23

je sais que c'est une question assez ancienne, mais je n'ai pas vu de réponse, qui précisent 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 itération simple 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, il va il suffit de retourner la valeur true.

2. Exemple dans ce cas, nous voulons itérer avec de jquery chaque fonction , qui prend la fonction anonyme comme 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;
}
0
répondu Vural Acar 2018-08-22 14:11:31