2009-09-11 11 views
10

Potrzebuję ustawić fokus na element, który jest bezpośrednio następny (aw innym przypadku natychmiastowy poprzedni) do bieżącego elementu.jQuery: pobierz natychmiast następny element za bieżącym elementem

Na przykład:

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

To co kiedyś

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

kiedy sprawdzić wartość curr w Firebug to pokazuje niezdefiniowany z jakiegoś powodu.

Odpowiedz

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

Czy jesteś w środku obsługi zdarzeń jquery? Jeśli tak, to dlaczego nie używać $(this).next() i/lub $(this).prev()?

+0

a co z bąbelkami zdarzeń? – geowa4

+0

Uczciwe pytanie. Zależy to od oryginalnego selektora używanego do przechwycenia zdarzenia, którego brakowało w pytaniu. Dobra odpowiedź, +1 ode mnie –

21

Zastosowanie

$(event.target).next() 

dostać następną rodzeństwo. Możesz także przekazać wyrażenie funkcji next. Pozwoli to wybrać kolejny rodzeństwo pasujące do selektora Ty:

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

Można również użyć nextAll, który działa w ten sam sposób, ale zwraca wszystkie z poniższych sublings. See more here. Istnieją również, prev i prevAll, które są odpowiednikami dla uzyskania poprzedniego elementu (ów).

Zasadniczo byłeś bardzo blisko, wystarczy owinąć event.target w obiekcie jQuery, ponieważ event.target zwraca rzeczywisty element.

Powiązane problemy