2009-09-11 9 views
10

J'ai besoin de mettre l'accent sur l'élément qui est immédiatement suivant (et dans l'autre cas immédiat prev) sur l'élément courant.jQuery: obtient immédiatement l'élément suivant après l'élément en cours

Par exemple:

<li>item1</li> <- prev element (get this element) 
<li>item1</li><- current element 
<li>item1</li> <- next element (get this element) 
<li>item1</li> 

C'est ce que je

var curr = (event.target).next(); 
$(curr).trigger('focus'); 

quand je vérifie la valeur de curr en Firebug il montre non définie pour une raison quelconque.

Répondre

1
var curr = (event.target).nextSibling; 
6

Êtes-vous dans un gestionnaire d'événements jquery? Si oui, pourquoi ne pas utiliser $(this).next() et/ou $(this).prev()?

+0

et qu'en est-il des bulles d'événements? – geowa4

+0

Juste question. Cela dépend du sélecteur d'origine utilisé pour accrocher l'événement, qui manquait à la question. Belle réponse btw, +1 de moi –

21

Utilisez

$(event.target).next() 

pour obtenir le frère suivant. Vous pouvez également passer une expression à la fonction next. Cela permet de sélectionner la fratrie à côté de vous correspondre sélecteur:

$(event.target).next("p") 

Vous pouvez également utiliser nextAll, qui fonctionne de la même manière, mais retourne tous les sublings suivants. See more here. Il y a aussi, prev et prevAll, qui sont les analogues pour obtenir le (s) élément (s) précédent (s).

Fondamentalement, vous étiez vraiment proche, vous avez juste besoin d'envelopper event.target dans l'objet jQuery, comme event.target renvoie l'élément réel.