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 :

Sélection sur un nom d'id dynamique


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 162
    Par défaut Sélection sur un nom d'id dynamique
    Bonjour,

    Je construis du HTML de manière dynamique (avec PHP). Dedans, j'ai un certain nombre de DIV avec un id dynamique (du genre champ-xx avec xx = un numéro de 0 à 99). Ce nombre de div et les numéros sont variables. Mais je les maîtrise et j'ai leur liste dans un array javascript.
    J'ai ensuite besoin de faire un traitement JQuery sur ces div (un append() tout simple). Je parcours alors mon array qui contient le numéros des div... Mais ensuite, comment je sélectionne ce champ dynamique ??

    Je sais si j'ai été clair... Alors un p'tit bout de code (mon array avec la liste des numéros est listIdChamp. Je l'ai vérifié avec un alert() et il est ok.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    [...]
    for (var i=0; i < listIdChamp.length; i++)
    {
      var idDiv = "champ-" + listIdChamp[i];
      $("#idDiv").append("etc...");
    }
    [...]
    Evidemment, ce code ne convient pas vu que la mon sélecteur va rechercher <div id="idDiv">... Mais je ne sais pas comment mettre une valeur dynamique dans le sélecteur...

  2. #2
    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 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    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 659
    Billets dans le blog
    1
    Par défaut
    le selecteur est un string ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     var idDiv = "champ-" + listIdChamp[i];
      $("#"+idDiv).append("etc...");
    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 !

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 162
    Par défaut
    J'ai bien essayé ce genre de combinaisons avant de poser ma question ici mais sans succès (alors que le alert(idDiv) m'affiche bien champ-xx).
    Faut que je cherche le problème ailleurs du coup...
    Merci pour ta réponse rapide... Je vais enquêter sur mon problème mais au moins je sais qu'il ne vient pas de là.

  4. #4
    Membre éclairé Avatar de kohsaka
    Homme Profil pro
    Intégrateur HTML / Developpeur .NET
    Inscrit en
    Janvier 2007
    Messages
    383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Intégrateur HTML / Developpeur .NET

    Informations forums :
    Inscription : Janvier 2007
    Messages : 383
    Par défaut
    Citation Envoyé par SpaceFrog Voir le message
    le selecteur est un string ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     var idDiv = "champ-" + listIdChamp[i];
      $("#"+idDiv).append("etc...");
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     var idDiv = "#champ-" + listIdChamp[i];
      $(idDiv).append("etc...");


    (ce que spaceFrog a mis est sensé fonctionner)

    Sinon il y a la fonction .eq() http://api.jquery.com/eq/ si ta liste d'id démarre à 0

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $("#champ").eq(listIdChamp[i]).append("etc...");

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 162
    Par défaut
    Ma liste ne démarre pas à 0 et n'est pas forcément une suite (par exemple il peut y avoir 3 valeurs dans l'ordre suivant : 56, 12, 88).
    J'ai trouvé mon soucis qui ne venait en effet pas de la partie javascript mais de la partie PHP dans la construction dynamique de la page. J'étais passé à côté lors de ma première vérif à cause d'une petite subtilité dans ce foutu bug.
    Ca fonctionne bien maintenant. Merci pour l'aide !

  6. #6
    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 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    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 659
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $("#champ").eq(listIdChamp[i]).append("etc...");
    Heu un id étant unique sur la page ton code n'a aucun sens !!
    eq() c'est pour l'indice dans la collection
    Or id => un seule element
    tu ne peux pas atteindre un pseudo indice dans l'id à mois de faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $("[id^='champ']").eq(listIdChamp[i]).append("etc...");
    a condition que tu n'aies pas de "trous " de nommage dans tes ids ...
    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 !

  7. #7
    Membre éclairé Avatar de kohsaka
    Homme Profil pro
    Intégrateur HTML / Developpeur .NET
    Inscrit en
    Janvier 2007
    Messages
    383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Intégrateur HTML / Developpeur .NET

    Informations forums :
    Inscription : Janvier 2007
    Messages : 383
    Par défaut
    Heu, oui tout a fait j’étais à coté de la plaque la
    Enfin dans mon esprit j'imaginais une class et non un id

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <div id="content">
       <div class="champ">blabla</div>
       <div class="champ">blabla</div>
       <div class="champ">blabla</div>
       <div class="champ">blabla</div>
       <div class="champ">blabla</div>
    </div>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $("#content .champ").eq(listIdChamp[i]).append("etc...");

  8. #8
    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 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    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 659
    Billets dans le blog
    1
    Par défaut
    Et moi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <div id="content">
       <div id ="champs0">blabla</div>
       <div id ="champs1">blabla</div>
       <div id ="champs2">blabla</div>
       <div id ="champs3">blabla</div>
       <div id ="champs4">blabla</div>
    </div>




    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $("[id^='champs']").eq(i).append("etc...");
    avec i entre 0 et 4
    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 !

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

Discussions similaires

  1. [XL-2007] Boucle pour une sélection multiple par nom sur un tableau croisé dynamique VBA
    Par kuro200 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 17/06/2015, 20h31
  2. Réponses: 5
    Dernier message: 24/10/2014, 12h42
  3. Cadre de sélection sur contrôle dynamique
    Par Thiby dans le forum MFC
    Réponses: 3
    Dernier message: 17/06/2009, 19h51
  4. [CR] Problème de sélection sur un champ date
    Par noluc dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 21/11/2003, 16h56
  5. free sur des tableaux "a moitié dynamiques"
    Par barthelv dans le forum C
    Réponses: 4
    Dernier message: 31/07/2003, 15h30

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