jquery, temukan elemen berikutnya berdasarkan kelas


102

Bagaimana saya bisa menemukan elemen berikutnya berdasarkan kelas.

saya mencoba dengan $(obj).next('.class');tetapi ini mengembalikan kelas hanya di $(obj)orang tua. Saya perlu mengambil elemen berikutnya di mana saja di seluruh kode dengan nama kelas. Karena kode saya terlihat seperti

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

Apakah ini mungkin?

Jawaban:


147

Dalam hal ini Anda perlu pergi ke <tr> kemudian digunakan .next(), seperti ini:

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

Atau jika mungkin ada baris di antaranya tanpa bagian .classdalam, Anda dapat menggunakan .nextAll(), seperti ini:

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

Akan lebih mudah untuk melakukan ini: $ (obj) .closest ('tr'). NextAll ('. Class') [0];
StuR

2
@StuR - itu tidak akan berfungsi di sini, karena .nextAll () hanya melihat elemen saudara. Anda memerlukan sesuatu yang melihat keturunan untuk menemukan <div> pertanyaan berikutnya.
Nick Craver

1
Dan bagaimana jika ingin mendapatkan atribut dari HTMLObject yang dikembalikan? Seperti$(obj).closest('tr').nextAll('.class')[0].attr('data-attribute');
Dennis Braga

Anda mungkin juga perlu menggunakan: .parent (). Next ("") jika elemen tidak memiliki saudara
shasi kanth

@NickCraver Anda luar biasa
ROH KUDUS

23

Untuk menemukan elemen berikutnya dengan kelas yang sama:

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

13

Anda tidak dapat menggunakan next () dalam skenario ini, jika Anda melihat dokumentasi yang tertulis:
Next () Dapatkan saudara berikut segera dari setiap elemen dalam kumpulan elemen yang cocok. Jika selektor disediakan, itu mengambil saudara berikutnya yang cocok dengan selektor tersebut.

jadi jika DIV kedua berada di TD yang sama maka Anda dapat membuat kode:


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

Tapi karena tidak, saya tidak melihat titik untuk digunakan next (). Sebagai gantinya Anda dapat membuat kode:

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


6
Tapi bagaimana cara menemukan elemen selanjutnya. .find akan mengembalikan semua elemen.
Shashwat Kumar
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.