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 :

Parent->enfant, une astuce?


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 4
    Par défaut Parent->enfant, une astuce?
    Bonjour,

    je cherche à cacher ou afficher par un clique d'un élément de <a class="view"> l'affichage d'un <tr class="comment">

    voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <tr class="change">
       <td class="center">
          // le déclencheur de l'événement
          <a class="view"><img title="hide comments" src="themes/images/eye-cross.png" /></a>
       </td>
    </tr>
    <tr class="comment">
     // le contenu
    </tr>
    à savoir que j'ai 100 éléments de .view et .comment sur la même page.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $('.view').live({
       click: function(){
          if ($(this).find('img').attr('src') == 'themes/images/eye-cross.png'){
              $(this).find('img').attr('src', 'themes/images/eye.png');
              $(this).next('.comment').hide();
          } else {
              $(this).find('img').attr('src', 'themes/images/eye-cross.png');
    	  $(this).next('.comment').show();
          }
        }
    });
    et donc je n'arrive pas via cette syntaxe à m'approcher de l'élément .comment suivant.

    La page et les éléments visés ont été chargé par une méthode ajax

    Je vous remercie d'avance de l'aide que vous pourrez m'apporter, je continue de chercher !

    Edit : j'ai aussi essayé en le sélectionnant de cette manière
    $(this).parent('.change').next('.comment').show();

  2. #2
    Membre Expert Avatar de Willpower
    Homme Profil pro
    sans emploi
    Inscrit en
    Décembre 2010
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 009
    Par défaut
    je ne suis pas très calé en jQuery mais de tout évidence en regardant ton code html, ton élément <a> est imbriqué, donc il faudrait selon toute logique faire un appel du genre :

    $(this).parent().parent().next()


    ps: je ne sais pas si ma ligne est syntaxiquement correcte, mais c'est juste pour montrer l'idée.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 4
    Par défaut
    du coup c'est ce que j'ai fais avec cette syntaxe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $(this).parent('.change').next('.comment').show();
    j'ai cherché le parent change de $(this)
    et quand je fais un 'alert' de debug dessus ca me renvoi du javascript que j'ai pas codé :p, sans doute un morceau de ma version jquery

  4. #4
    Membre chevronné Avatar de roster
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    397
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 397
    Par défaut
    $(this).parent().parent().next('.comment')

    devrait fonctionner.

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 4
    Par défaut
    je suis sur les fesses, pourtant j'ai lu la doc, parent('.change') aurait du fonctionner, bref, merci à vous deux pour vos réponses, sujet clos !

  6. #6
    Membre chevronné Avatar de roster
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    397
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 397
    Par défaut
    Citation Envoyé par v1nceIsHere Voir le message
    je suis sur les fesses, pourtant j'ai lu la doc, parent('.change') aurait du fonctionner, bref, merci à vous deux pour vos réponses, sujet clos !
    parent('.change') signifie que tu recherches un parent 'direct' ayant la classe change, ce qui n'était pas le cas ici.

    Tu aurais pu utiliser .parents('.change') ou mieux encore .closest('.change').

    .parents() remonte jusqu'à l'élément root, il est donc déconseillé car plus lent que .parent().parent(). Son avantage, c'est qu'il peut rendre la maintenabilité plus aisée.

    .closest() descend puis remonte le long du DOM, dans ton cas vu que ta balise <a> possède une balise <img> enfant, il serait un choix moins judicieux et surtout moins lisible je trouve.

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

Discussions similaires

  1. Comment adapter la hauteur d'une div enfant à une div parent.
    Par infovect dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 06/03/2015, 08h29
  2. parent et enfant..
    Par gdpasmini dans le forum Windows
    Réponses: 0
    Dernier message: 22/05/2006, 18h13
  3. Réponses: 4
    Dernier message: 20/01/2006, 16h03
  4. une astuce pour ouvrir la base de registre d'un autre disque
    Par bouassouille dans le forum Windows XP
    Réponses: 4
    Dernier message: 07/10/2005, 00h53
  5. Comment avoir des fenêtres parentes et enfants
    Par Invité dans le forum Agents de placement/Fenêtres
    Réponses: 6
    Dernier message: 20/09/2005, 11h53

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