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?

Alex
sumber

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');
Nick Craver
sumber
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 )
plavozont.dll
sumber
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')

Morteza Manavi
sumber
6
Tapi bagaimana cara menemukan elemen selanjutnya. .find akan mengembalikan semua elemen.
Shashwat Kumar