2009-08-19 7 views
1

J'ai un code similaire à ce qui suit:traversant dom dans jquery?

<div class="class1"> 
    <a class="link1" src="...">...</a> 
</div> 
<div class="class2"> 
    <a class="link2" src="...">...</a> 
</div> 

En admettant que je suis actuellement en cas de clic pour lien2 de classe, comment fais-je obtenir la valeur de l'hyperlien src link1? Ceux-ci sont générés dynamiquement donc il peut y avoir beaucoup d'instances de ce code donc je devrais traverser le dom de $ this pour arriver à link1. Merci.

Répondre

4
$('a.link2').click(function() { 
    console.log($(this).parent().prev('div.class1').children('a.link1')); 
}); 
1

Une solution flexible pourrait être si vous avez ajouté un identifiant commun à l'divs que vous appelez classes 1 et class2, vous pourriez trouver frère précédent de votre parent. Par exemple, au lieu de votre code HTML, vous pourriez avoir:

<div class="class1 someClass"> 
    <a class="link1 someLink" src="...">...</a> 
</div> 
<div class="class2 someClass"> 
    <a class="link2 someLink" src="...">...</a> 
</div> 

Et puis, dans une fonction onclick sur tous vos liens, par exemple,

$('a.someLink').click(function() { 
    var $someContainer = $(this).parents('someClass:first'); 
    var $prevContainer = $someContainer.prev(); 
    // now you can work with $prevContainer ... 
}); 

Vous serait bien sûr d'abord veulent vérifier si un frère "prev" existe vraiment ou non. Vous pouvez adapter à la trouver le prochain, etc.

Bonne chance!
-f!

+0

Je pense aussi peut-être que vous voulez demander comment obtenir le href, pas le src ?? Dans ce cas, vous demanderez $ prevContainer.find ('a'). Attr ('href') – Funka

Questions connexes