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 :

Recuperer un grand-parent en particulier


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2013
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 141
    Par défaut Recuperer un grand-parent en particulier
    Bonjour,

    Voilà mon code html se compose de la manière suivante:
    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <li class="Menu"><span id="trait"> Trait</span>
                <ul class=subMenu>
                         <img id="oeil_actif" src="..." style="width:23px; height:19px"/>
                     </ul>
    </li>

    Je souhaiterais lorsque je clic sur l'image "oeil_actif" récupérer l'id de son grand-parent (ici au clic je souhaite récupérer l'id "trait").

    J'ai bien tenté cela:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $("#oeil_actif").click(function(){
              console.log($("#oeil_actif").parent().parent());
    });
    Cela me renvoi l'objet [li.Menu] ce qui se rapproche de ce que je souhaite, car de la faut encore que je récupère le span et ensuite l'id de celui-ci. Et donc je trouve cela long et fastidieux pour juste recupérér l'id d'un grand-parent

    D'ou ma question ici y a t'il un moyen moins fastidieux d'obtenir mon grand-parent qui à l'id ''trait" ?

    D'avance merci.

  2. #2
    Membre chevronné Avatar de saymoneu
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2010
    Messages
    248
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2010
    Messages : 248
    Par défaut
    Bonjour,

    Le span "trait" n'est pas un parent de votre image, vous ne risquez pas de le trouver directement avec parent()
    C'est plutot un élément "frere" du "parent" de votre image(un oncle quoi ).
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    console.log($("#oeil_actif").parent().prev().attr('id'));
    devrait marcher

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2013
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 141
    Par défaut
    Ok cela marche bien merci, mais finalement cela n'arrange pas mon problème .

    En faite ce que je souhaitais faire c'est ceci:


    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <li class="Menu"><span id="trait"> Trait</span>
                <ul class=subMenu>
                         <img id="oeil_actif" src="..." style="width:23px; height:19px"/>
                     </ul>
                  <li class="Menu"><span id="point"> Point</span>
                <ul class=subMenu>
                         <img id="oeil_actif" src="..." style="width:23px; height:19px"/>
                     </ul>
    </li>

    De la si je fais cela:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $("#oeil_actif").click(function(){
           console.log($("#oeil_actif").parent().prev().attr('id'));
    });
    Cela me renvoi bien trait mais pas "poin" quand je clic sur l'autre oeil , et:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $("#oeil_actif").click(function(){
           console.log($(this).parent().prev().attr('id'));
    });
    Ne change pas l a situation, des idees ?

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2013
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 141
    Par défaut
    Finalement cela marche très bien, j'ai simplement fais une erreur de débutant j'ai considéré tout mes images "oeil_actif" comme des id, alors qu'il fallait que je les passent en class

    Pour ceux que celaintéresse voici le code final:

    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <li class="Menu"><span id="trait"> Trait</span>
                <ul class=subMenu>
                         <img class="oeil_actif" src="..." style="width:23px; height:19px"/>
                     </ul>
                  <li class="Menu"><span id="point"> Point</span>
                <ul class=subMenu>
                         <img class="oeil_actif" src="..." style="width:23px; height:19px"/>
                     </ul>
    </li>

    Et le Jquery nous donne donc

    Code JQuery : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $(".oeil_actif").click(function(){
          var toto=$(this).parent().prev().attr('id');
           console.log(toto);
    });

    Cela m'affiche bien point ou trait en fonction de la ou je clic

    Merci

  5. #5
    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 : 54
    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
    Ta structure HTML est assez maladroite...
    Tu devrais systématiquement fermer tes balises, on y verrait un peu plus clair.
    Une balise <ul> doit contenir des <li>, pas des images...
    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

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2013
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 141
    Par défaut
    Je suis d'accord avec toi, j'ai oublié la balise </ul> cela venant du fais que je n'ai copié qu'une partis de mon code et donc j'ai oublié de fermer ma balise <ul>.

    Sinon pour ce qui est de mon image dans une <li> cela est pour ce que je suis entrain de faire "nécessaire" car l'utilisation des <ul> et <il> n'est pas la pour faire une liste d'objet.

    En faite il s'agit d'une structure que j'ai été obligé je mettre en place afin de pouvoir faire fonctionner dessus un "plugin Jquery" que j'ai récupérer sur un site.

    Et donc soit je transformé tout mes <ul> et <li> en <div> et dans ce cas la je devais me farcir + de 400 ligne de code du "plugin jquery" afin d'adapter celui-ci avec mes div, pas forcément bien .

    Ou soit je partais sur la base des <ul> et <li> afin que je puisse utiliser ce "plugin" sans me soucier de ce qu'il ya dedans.

    D'ou mon choix de mettre mes images dans des <li> même si cela n'est pas très correcte en soi .

  7. #7
    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 : 54
    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
    l'utilisation des <ul> et <il> n'est pas la pour faire une liste d'objet
    Si une liste n'est pas là pour faire une liste, j'y perds mon latin...

    Sinon pour ce qui est de mon image dans une <li>
    Ben moi, c'est pas tout à fait ce que je lis...
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <ul class=subMenu>
        <img class="oeil_actif" src="..." style="width:23px; height:19px"/>
    </ul>
    Tu peux tout à fait mettre des images dans des <li>, c'est dans des <ul> que c'est moins bien.
    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

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

Discussions similaires

  1. [DOM] Modification du style en fonction du grand-parent ?!
    Par ghohm dans le forum Général JavaScript
    Réponses: 17
    Dernier message: 03/07/2007, 15h50
  2. [Maven2] Héritage d'un grand parent
    Par Palmer dans le forum Maven
    Réponses: 6
    Dernier message: 02/03/2007, 14h44
  3. [XPath] Récupérer un élément parent
    Par CB56 dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 03/12/2006, 19h46
  4. [JOptionPane] connaitre l'instance "grand"-parente
    Par koolway dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 21/04/2006, 10h37
  5. Recuperation du reperoire parent!
    Par nicolaskarp dans le forum C
    Réponses: 4
    Dernier message: 06/01/2006, 19h03

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