2010-09-09 15 views
13

Je cherche un moyen de sélectionner un élément div qui n'est pas le suivant directement à celui qui est "sélectionné" par une fonction de clic.Jquery Sélectionner l'élément 2 positions plus loin - une autre façon de .next(). Next()

<div id="click">(siblings)</div><div>text</div><div id="get this one"></div> 

Maintenant, je voudrais choisir celui avec l'id « obtenir celui-ci » - dans mon code identifiant ce n'est pas disponible. Tous les divs ont la même classe et ont des frères et soeurs.
Je pourrais choisir le troisième par $(this).next().next() mais je pense que ce n'est pas la meilleure façon de le faire.
Il peut également y avoir div s avant celui sur lequel vous avez cliqué - ce n'est donc pas forcément le premier.

J'ai essayé le sélecteur :nth-child mais je n'ai pas trouvé de solution.
Plus tard, je voudrais également sélectionner le 13ème après le clic (ou le 23ème, 65ème et ainsi de suite). Cela signifie que je voudrais avoir une solution plutôt dynamique à ce problème.

Merci pour votre aide,
Phil

Répondre

20

Vous pouvez utiliser .nextAll() avec .eq() pour votre approche dynamique, comme ceci:

$(this).nextAll().eq(1) //0 based index, this would be .next().next() 

Cela vous permettra d'obtenir n frères et sœurs avant, qui semble pour être ce que vous cherchez.

+0

Ok, maintenant je me sens comme un idiot. C'est si facile - et cela fonctionne, bien sûr. Il est tellement logique que je me déteste de ne pas le faire fonctionner par moi-même. Mais merci beaucoup :) – Phil

0

Il semble que $(this).parent().find('div').eq(2).attr('id') devrait fonctionner.

MISE À JOUR (FIND Ajouté ('div'))

+0

Cela aboutirait toujours à un ensemble d'éléments vides, '.parent()' sélectionne un seul élément, pas des frères et soeurs :) –

+0

Avant, votre réponse contenait nextAll ('eq: 2'). Cela fonctionnerait-il de la même manière que ce que vous avez pour votre réponse maintenant? Quelle est la différence? – d2burke

+0

@ d2burke - Vous obtenez le 3ème élément dans le parent, peu importe ce que ... ce n'est pas relatif à l'élément * current *, il obtient juste le 3ème, peu importe lequel vous avez cliqué. Aussi ma réponse a utilisé ': eq (1)' pour le 2ème, c'est un index basé sur 0 :) –