2011-01-11 17 views
8

to działa:Jak wybrać następny pasujący element?

<a href="#/link1">link1</a> 
<a href="#/link2">link2</a> 
<a href="#/link3">link3</a> 

$("a[href*='#/link1'").next('a[href*="#"]').click(); 

ale to nie:

<a href="#/link1">link1</a><br> 
<a href="#/link2">link2</a><br> 
<a href="#/link3">link3</a><br> 

$("a[href*='#/link1'").next('a[href*="#"]').click(); 

powyższych testów tag "< br>", a nie do następnego linku dopasowanie.

Co powinienem zrobić, aby działało w obu sytuacjach. Chcę wybrać następny pasujący element, a nie następny element, jeśli pasuje. Może .next() nie jest właściwą metodą?

Odpowiedz

17

Drugi przykład nie należy niczego wybierać wcale. Przeczytaj documentation of next:

Pobierz natychmiast następujące rodzeństwo każdego elementu w zestaw dopasowanych elementów. Jeśli dostarczony jest selektor, pobiera następnego siostrę tylko wtedy, gdy pasuje do tego selektora.

Musisz użyć nextAll dostać wszystkie rodzeństwa i filtrować je odpowiednio:

$("a[href*='#/link1']").nextAll('a[href*="#"]:first').click(); 

Reference: nextAll

+1

myślę, że PO jest świadoma niedociągnięć '.next() ', pamiętaj, aby przeczytać * całe * pytanie;) –

+0

@Nick Craver: Przysięgam, że zostało napisane * Powyższe ** wybiera ** tag'
'... może to było tylko życzenie thi nking ... jestem zmęczony;) ​​ –

+0

Co dokładnie dzieje się, jeśli nie używasz ": first"? Czy kliknie wszystkie linki? – Dave

5

Zastosowanie .nextAll() i :first dostać następną rodzeństwo, który pasuje, a nie kolejny rodzeństwo jeśli pasuje, tak:

$("a[href*='#/link1'").nextAll('a[href*="#"]:first').click(); 
Powiązane problemy