2011-01-11 17 views
8

Questo funziona:Come selezionare il prossimo elemento corrispondente?

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

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

ma questo non lo fa:

<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(); 

È possibile che mette alla prova il tag "< br>", non il prossimo collegamento corrispondente.

Come farei per farlo funzionare in entrambe le situazioni. Voglio selezionare il prossimo elemento corrispondente, non il prossimo elemento se corrisponde. Forse .next() non è il metodo corretto?

risposta

17

Il secondo esempio non deve selezionare nulla. Leggi la documentation of next:

Prendi il fratello subito dopo di ogni elemento nel set di elementi corrispondenti. Se viene fornito un selettore, recupera il fratello successivo solo se corrisponde a quel selettore.

bisogna usare nextAll per ottenere tutti fratelli e filtrare di conseguenza:

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

Riferimento: nextAll

+1

Credo che il PO è consapevole delle carenze di '.Next() ', assicurati di leggere la * intera * domanda;) –

+0

@Nick Craver: giuro che è stato scritto * Il sopra ** seleziona ** il tag'
* ... forse era solo un desiderio nking ... Sono stanco;) –

+0

Cosa succede esattamente se non usi ": first"? Farebbe clic su tutti i collegamenti? – Dave

5

Usa .nextAll() e :first per ottenere il fratello successivo che corrisponde, piuttosto che il successivo fratello se corrisponde, in questo modo:

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