Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript > Bibliothèques & Frameworks > jQuery
jQuery Forum d'entraide sur le framework jQuery. Avant de poster : Tutoriels jQuery, FAQ jQuery, Tous les tutoriels JavaScript, Toutes les FAQ JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 06/03/2011, 18h21   #1
Invité de passage
 
Inscription : mars 2011
Messages : 4
Détails du profil
Informations forums :
Inscription : mars 2011
Messages : 4
Points : 0
Points : 0
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 :
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 :
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();
v1nceIsHere est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/03/2011, 19h04   #2
Membre Expert
 
Avatar de Willpower
 
Homme Boris Dessy
sans emploi
Inscription : décembre 2010
Messages : 853
Détails du profil
Informations personnelles :
Nom : Homme Boris Dessy
Localisation : Belgique

Informations professionnelles :
Activité : sans emploi

Informations forums :
Inscription : décembre 2010
Messages : 853
Points : 1 352
Points : 1 352
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.
Willpower est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/03/2011, 19h17   #3
Invité de passage
 
Inscription : mars 2011
Messages : 4
Détails du profil
Informations forums :
Inscription : mars 2011
Messages : 4
Points : 0
Points : 0
du coup c'est ce que j'ai fais avec cette syntaxe
Code :
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
v1nceIsHere est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/03/2011, 21h20   #4
Membre éclairé
 
Avatar de roster
 
Inscription : décembre 2008
Messages : 399
Détails du profil
Informations forums :
Inscription : décembre 2008
Messages : 399
Points : 352
Points : 352
$(this).parent().parent().next('.comment')

devrait fonctionner.
roster est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/03/2011, 22h00   #5
Invité de passage
 
Inscription : mars 2011
Messages : 4
Détails du profil
Informations forums :
Inscription : mars 2011
Messages : 4
Points : 0
Points : 0
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 !
v1nceIsHere est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/03/2011, 22h49   #6
Membre éclairé
 
Avatar de roster
 
Inscription : décembre 2008
Messages : 399
Détails du profil
Informations forums :
Inscription : décembre 2008
Messages : 399
Points : 352
Points : 352
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.
roster est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h39.


 
 
 
 
Partenaires

Hébergement Web