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 :

Utiliser la fonction jquery dans une boucle


Sujet :

jQuery

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2014
    Messages : 15
    Points : 10
    Points
    10
    Par défaut Utiliser la fonction jquery dans une boucle
    Bonjour,

    Je suis confronté a un problème. Je dispose de plusieurs blocs sur lesquels j'aimerais traiter la même fonction, a l'identifiant prés. C'est pour un système d'upload.

    Pour faire un exemple clair : Je souhaite afficher le nom du bloc sur lequel je clique. Pour le bloc 1 cela marche, il est écrit littéralement. Mais pour ceux qui sont issus de la boucle, seul la valeur 11 semble être la norme. (Alors que le console.log m'affiche correctement tout les id.)

    J'imagine que ce que je propose est bancale, mais je n'ai pas trouvé d’équivalent propre sur internet...

    Code html : 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
    <!DOCTYPE HTML>
    <html>
    <head>
    	<meta charset= "utf-8" lang= "fr" />
    	<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
    </head>
    <body>
    	<div id="test1">test bloc 1</div>
    	<div id="test2">test bloc 2</div>
    	<div id="test3">test bloc 3</div>
    	<div id="test4">test bloc 4</div>
    	<div id="test5">test bloc 5</div>
    	<div id="test6">test bloc 6</div>
    	<div id="test7">test bloc 7</div>
    	<div id="test8">test bloc 8</div>
    	<div id="test9">test bloc 9</div>
    	<div id="test10">test bloc 10</div>
    	<div id="test11">test bloc 11</div>
    	<script type="text/javascript" src="probleme.js"></script>
    </body>
    </html>
    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
    //La fonction de test
     
    function fonctionexterne(numbloc) {
    	alert("Je suis sur le bloc "+numbloc);
    }
     
    //On implemente le comportement du premier bloc pour les test (qui marche)
     
    $("#test1").click(function() {
    		fonctionexterne(1);	
    	});
     
    //Ensuite on essaye donc de generer le comportement pour tout mes blocs (ce qui ne marche pas)	
     
    for (j=2;j<=11;j=j+1) {
     
    		reff = "#test";
    		reff += String(j);
     
    	$(reff).click(function() {
    		fonctionexterne(j)
    	});
     
    	console.log(reff);
    }

  2. #2
    Membre émérite
    Avatar de Kaamo
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    1 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 165
    Points : 2 778
    Points
    2 778

  3. #3
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  4. #4
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2014
    Messages : 15
    Points : 10
    Points
    10
    Par défaut
    Merci pour vos réponses

    Le code sur jsshell ne marchait pas tout a fait, je l'ai adapté de la manière qui suit :

    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
    //La fonction de test
     
    function fonctionexterne(numbloc) {
    	alert("Je suis sur le bloc "+numbloc);
    }
     
    //On implemente le comportement du premier bloc pour les test (qui marche)
     
    $("#test1").click(function() {
    		fonctionexterne(1);	
    	});
     
    //Ensuite on essaye donc de generer le comportement pour tout mes blocs (ce qui ne marche pas)	
     
     $("[id^='test']").on("click", function(){
            nr=$(this).attr('id').match(/\d+/);
            fonctionexterne(nr[0])
        })  ;
    En plus j'arrive a comprendre ce qui est fait.
    Merci, je met donc en résolu.

    Cependant je suis curieux de savoir pourquoi mon premier code ne marchait pas, pour quelle raison ce n'était pas possible ?

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 20/02/2014, 15h57
  2. [MySQL] Fonction récursive dans une boucle
    Par renaud26 dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 21/02/2008, 12h18
  3. la fonction SOMMEPROD dans une boucle dynamique
    Par Mounamidou dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 15/10/2007, 16h32
  4. Fonction system() dans une boucle for
    Par banban56 dans le forum C
    Réponses: 3
    Dernier message: 16/06/2007, 18h48
  5. utilisation de fonction membre dans une autre
    Par tcharles dans le forum C++
    Réponses: 4
    Dernier message: 14/12/2005, 17h19

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