IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

jQuery Discussion :

Comment puis-je interrompre une boucle each ?


Sujet :

jQuery

  1. #1
    Membre du Club
    Inscrit en
    Novembre 2009
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 6
    Par défaut Comment puis-je interrompre une boucle each ?
    Bonjour,

    Voila j'ai un petit problème avec jQuery.

    J'ai une fonction nommée, dans laquelle j'exécute un each(). Je souhaiterai que cette fonction nommée renvoie "a" ou "b", selon si le test (défini dans mon each) est vérifié ou non.

    Un petit exemple (très simplifié) :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    alert(MaFonction());
     
    function MaFonction() {
     
    $('mon_selector').each(function() {
     
    if(conditon) {
    return a;
    }
     
    });
    return b;
    }
    Systématiquement, MaFonction() retourne "b". Comment faire pour que MaFonction() me retourne "a" si la condition est vérifiée ?

    Un grand merci par avance !

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    J'ai une fonction nommée, dans laquelle j'exécute un each()
    Le return a se fait dans la fonction anonyme passée dans le each et tu ne récupères nulle part cette valeur retournée.
    Le plus simple serait de passer par une variable :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    alert(MaFonction());
     
    function MaFonction() {
     var retour = b;
    $('mon_selector').each(function() {
     
    if(conditon) {
    retour = a;
    return;
    }
     
    });
    return retour;
    }
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  3. #3
    Membre du Club
    Inscrit en
    Novembre 2009
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 6
    Par défaut
    Ok, merci beaucoup

    Donc je n'ai plus qu'a faire une variable globale dans ma fonction, pour conserver mes états... puis retourner cette dernière en fin de traitement
    Pas super élégant mais bon, si il est pas possible de récupérer le retour d'une fonction anonyme, pas trop le choix.

  4. #4
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut
    Bonsoir

    Une boucle each ne peut être interrompue que par un return false !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    <script>
    	$(function(){
    		function maFonction(){
    			var retour = "Je suis b";
     
    			$("*").each(function(i, item){
    				console.log(i, item);
     
    				if (true){
    					retour = "Je suis a";
     
    					/*
    					 * Une boucle each ne peut être interrompue
    					 * que par un return false !
    					 */
    					return false;
    				}
    			});
     
    			return retour;
    		}
     
    		console.log(maFonction());
    	});
    </script>

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VB6]Comment puis-je passer une ComboBox en argument?
    Par Xan dans le forum VB 6 et antérieur
    Réponses: 20
    Dernier message: 26/02/2007, 15h03
  2. [Sécurité] Comment puis je fermer une fenetre
    Par Maria1505 dans le forum Langage
    Réponses: 4
    Dernier message: 08/12/2006, 09h49
  3. Réponses: 5
    Dernier message: 06/10/2006, 17h55
  4. Réponses: 2
    Dernier message: 03/07/2006, 20h14
  5. [VBA][Excel] Comment faire pour faire une boucle?
    Par DonKnacki dans le forum Macros et VBA Excel
    Réponses: 29
    Dernier message: 19/12/2005, 14h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo