2010-10-27 16 views
3

Voici l'exemple de code html:Comment obtenir un élément avec classe après celui en cours dans JQuery?

<div id="current_element">Current element</div> 
Many unknown tags... 
<div class="target">This is target element</div> 
Many other tags... 

Remarque Cet élément cible et élément courant ne peut pas sous le même parent, je ne peux pas le trouver avec .nextAll («cible »), non?

Y a-t-il un simple façon de le trouver? Merci!

+0

mais ils sont sous le même parent s'ils sont juste un après un? – joni

+0

Voir ci-dessous le code par exemple:

Current
Target
Ils ne sont pas en même droit de parent? – Dong

+0

Alors, comment savez-vous quel élément est la cible? S'il vous plaît expliquer la règle clairement, alors cela devrait vous conduire à la réponse –

Répondre

2

Vous HTML dans le commentaire est différent de celui de la question

<div id="area1"> 
    <div id="current_element">Current</div> 
</div> 
<div id="area2"> 
    <div class="target">Target</div> 
</div> 

Ce que je voudrais faire est de les envelopper avec un div:

<div id="mainparent"> 
    <div id="area1"> 
    <div id="current_element">Current</div> 
    </div> 
    <div id="area2"> 
    <div class="target">Target</div> 
    </div> 
<div> 

Puis je revenir en arrière et trouver le autre enfant:

//this = .current_element 
var $target = $(this).closest("#mainparent").find(".target"); 

J'espère que cela aide!

10

Depuis elemenets sont retournés dans l'ordre du document, vous pouvez utiliser .index() pour trouver la suivante dans un ensemble contenant à la fois, comme ceci:

var ce = $("#current_element"), all = $("#current_element, .target"); 
var target = all.eq(all.index(ce)+1); 

You can test it out here.

+0

+1 J'ai utilisé cela dans quelque chose que j'ai écrit et cela a fonctionné comme un charme pour moi, merci. Crédit donné dans les commentaires de mon code. –