jquery, trova l'elemento successivo per classe


102

Come posso trovare l'elemento successivo per classe.

ho provato con $(obj).next('.class');ma questo restituisce classi solo nel $(obj)genitore. Devo prendere l'elemento successivo ovunque nel codice in base al nome della classe. Perché il mio codice sembra

<table>
<tr><td><div class="class">First</div></td></tr>
<tr><td><div class="class">Second</div></td></tr>
</table>

È possibile?

Risposte:


147

In questo caso è necessario passare al <tr> successivo utilizzo .next(), in questo modo:

$(obj).closest('tr').next().find('.class');

Oppure, se possono esserci righe intermedie senza l' .classinterno, puoi usare .nextAll(), in questo modo:

$(obj).closest('tr').nextAll(':has(.class):first').find('.class');

Sarebbe più facile farlo: $ (obj) .closest ('tr'). NextAll ('. Class') [0];
StuR

2
@StuR - non funzionerebbe qui, poiché .nextAll () guarda solo gli elementi di pari livello. Hai bisogno di qualcosa che esamini i discendenti per trovare il <div> successivo che la domanda vuole.
Nick Craver

1
E se si volesse ottenere un attributo da quell'HTMLObject restituito? Like an$(obj).closest('tr').nextAll('.class')[0].attr('data-attribute');
Dennis Braga

Potrebbe essere necessario utilizzare anche: .parent (). Next ("") se l'elemento non ha fratelli
shasi kanth

@NickCraver Sei fantastico
LO SPIRITO SANTO

23

Per trovare l'elemento successivo con la stessa classe:

$(".class").eq( $(".class").index( $(element) ) + 1 )

13

Non puoi usare next () in questo scenario, se guardi la documentazione dice:
Next () Ottieni il fratello immediatamente successivo di ogni elemento nel set di elementi corrispondenti. Se viene fornito un selettore, recupera il fratello successivo che corrisponde al selettore.

quindi se il secondo DIV fosse nello stesso TD, potresti codificare:


// Won't work in your case
$(obj).next().filter('.class');

Ma poiché non lo è, non vedo un punto da usare next (). Puoi invece codificare:

$(obj).parents('table').find('.class')


6
Ma come trova l'elemento successivo. .find restituirà tutti gli elementi.
Shashwat Kumar
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.