jquery, sınıfa göre sonraki öğeyi bul


103

Bir sonraki öğeyi sınıfa göre nasıl bulabilirim.

ile denedim $(obj).next('.class');ama bu sınıfları yalnızca $(obj)ebeveynde döndürür . Bir sonraki öğeyi sınıf adına göre kodun herhangi bir yerine götürmem gerekiyor. Çünkü kodum şöyle görünüyor

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

Mümkün mü?

Yanıtlar:


149

Bu durumda size kadar gitmek gerekir <tr> sonra kullanıma .next()böyle:

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

Ya da arada olmayan satırlar varsa .class, şu şekilde kullanabilirsiniz .nextAll():

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

Bunu yapmak daha kolay olacaktır: $ (obj) .closest ('tr'). NextAll ('. Class') [0];
StuR

2
@StuR - burada işe yaramaz, çünkü .nextAll () yalnızca kardeş öğelere bakar. Sorunun istediği sonraki <div> 'i bulmak için torunlara bakan bir şeye ihtiyacınız var.
Nick Craver

1
Peki ya döndürülen HTMLObject'ten bir öznitelik almak istenseydi? Like an$(obj).closest('tr').nextAll('.class')[0].attr('data-attribute');
Dennis Braga


@NickCraver Sen harikasın
THE HOLY SPIRIT

23

Aynı sınıfa sahip bir sonraki öğeyi bulmak için:

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

14

Bu senaryoda next () işlevini kullanamazsınız, eğer belgelere bakarsanız :
Next () Eşleşen öğeler kümesindeki her bir öğenin hemen sonraki kardeşini alın . Bir seçici sağlanmışsa, seçiciyle eşleşen sonraki kardeşi alır.

bu nedenle, ikinci DIV aynı TD içindeyse kodlama yapabilirsiniz:


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

Ama öyle olmadığı için next () kullanacak bir nokta göremiyorum. Bunun yerine kod yazabilirsiniz:

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


6
Ama bir sonraki unsuru nasıl bulur? .find tüm öğeleri döndürür.
Shashwat Kumar
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.