2011-10-16 5 views
0

Cela peut sembler très amateurisme question mais j'ai une structure DOM HTML comme ceci:jquery sélectionner l'élément apparié précédent qui nest pas un frère

<div class="1"> 
    <div class="1a"> 
     <div class="1aa"></div> 
    </div> 
    <div class="1b"> 
     <a href="#">Link</a> 
    </div> 
</div> 

je dois choisir un <div> qui n'est pas directement frères et soeurs, par exemple:

$(function(){ 
    $('a').click(function(){ 
     // select div .1a 
    }); 
}); 

Je ne peux pas sélectionner directement div .1a car il peut y avoir plusieurs instances de .1a et je dois sélectionner le thats le plus proche du lien.

Toute aide appréciée

Répondre

0

Utilisez .closest ("1a"). Cela sélectionnerait la div requise qui est la plus proche de l'image.

+0

ne le sélectionnant pas. Une raison pour laquelle il ne le sélectionnerait pas? –

+0

Pouvez-vous ajouter le script à jsfiddle afin que je puisse le voir pour le débogage? –

+0

Je l'ai compris maintenant. J'ai fait ceci ... '$ (this) .parent(). Parent(). Enfants ('. 1a');' –

0
$(function(){ 
    $('a').click(function(){ 
    $(this).closest(".1a"); 
    }); 
}); 

.closest (« sélecteur ») trouve le premier ancêtre d'un élément qui correspond au sélecteur donné

Voir http://api.jquery.com/closest/ pour plus d'informations et des exemples

0

Pourriez-vous mettre explicitement la div qui doit être sélectionné un mis cet identifiant dans l'attribut rel du lien:

<div class="1"> 
<div class="1a" id="my-div-1"> 
    <div class="1aa"></div> 
</div> 
<div class="1b"> 
    <a href="#" rel="my-div-1">Link</a> 
</div> 
</div> 

Votre code JS ressemblera:

$(function(){ 
    $('a').click(function(){ 
    var selector = $(this).attr("rel"); 
    $("#"+selector).DOSOMETHING(); 
    }); 
}); 

Ceci fonctionnera toujours et vous n'avez pas besoin de penser que c'est le div le plus proche.

Jovan

Questions connexes