jQuery: Comment accéder à un enfant particulier d’un parent?

Pour donner un exemple simplifié, le bloc suivant a été répété plusieurs fois sur la page (il est généré dynamicment):

 

En cliquant dessus, je peux accéder au parent du lien avec:

 $(".mylink").click(function() { $(this).parents(".box").fadeOut("fast"); }); 

Cependant, je dois me rendre à la

de ce parent particulier.

Fondamentalement, quelqu’un peut-il me dire comment faire référence à un frère ou une sœur de plus haut niveau sans pouvoir s’y référer directement? Appelons ça grand frère. Une référence directe au nom de classe du grand frère ferait disparaître chaque instance de cet élément sur la page – ce qui n’est pas l’effet souhaité.

J’ai essayé:

 parents(".box .something1") ... no luck. parents(".box > .something1") ... no luck. siblings() ... no luck. 

N’importe qui? Merci.

L’appel de .parents(".box .something1") renverra tous les éléments parents correspondant au sélecteur .box .something . En d’autres termes, il retournera les éléments parents qui sont .something1 et qui sont à l’intérieur de .box .

Vous devez obtenir les enfants du parent le plus proche, comme ceci:

 $(this).closest('.box').children('.something1') 

Ce code appelle .closest pour que le parent interne corresponde à un sélecteur, puis appelle .children sur cet élément parent pour trouver l’oncle que vous recherchez.

 $(this).parent() 

La traversée de l’arbre est amusante

 $(this).parent().siblings(".something1"); $(this).parent().prev(); // if you always want the parent's previous sibling $(this).parents(".box").children(".something1"); 

Et bien d’autres façons, vous pourriez trouver ces documents utiles.

Cela trouvera le premier parent avec la box classe box puis trouvera la première classe enfant avec regex correspondant à something et obtiendra l’identifiant.

 $(".mylink").closest(".box").find('[class*="something"]').first().attr("id") 

Si j’ai bien compris votre problème, $(this).parents('.box').children('.something1') Est-ce ce que vous cherchez?

Vous pouvez utiliser .each() avec .children() et un sélecteur entre parenthèses:

 //Grab Each Instance of Box. $(".box").each(function(i){ //For Each Instance, grab a child called .something1. Fade It Out. $(this).children(".something1").fadeOut(); });