jquery、クラスによって次の要素を見つける


102

クラスごとに次の要素を見つけるにはどうすればよいですか?

私は試しました$(obj).next('.class');が、これは$(obj)親でのみクラスを返します。次の要素をコード全体のどこにでもクラス名で指定する必要があります。私のコードは次のように見えるので

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

これは可能ですか?

回答:


145

この場合、あなたはまで行く必要が<tr> 、その後の使用.next()のように、:

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

または、.class内部に行がない中間の行がある場合は.nextAll()、次のように使用できます。

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

これを行う方が簡単です:$(obj).closest( 'tr')。nextAll( '。class')[0];
StuR

2
@StuR-.nextAll()は兄弟要素のみを参照するため、ここでは機能しません。質問が求める次の<div>を見つけるために、子孫を調べる何かが必要です。
Nick Craver

1
そして、返されたHTMLObjectから属性を取得したい場合はどうでしょうか?のような$(obj).closest('tr').nextAll('.class')[0].attr('data-attribute');
デニスブラガ

要素に兄弟がない場合は、.parent()。next( "")を使用する必要がある場合もあります
shasi kanth

@NickCraver You are awesome
THE HOLY SPIRIT

23

同じクラスの次の要素を見つけるには:

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

13

このシナリオでは、次のように書か れているドキュメントを見ると、next()は使用できません。Next()一致する要素のセット内の各要素の直後の兄弟を
取得 します。セレクターが提供されている場合、セレクターに一致する次の兄弟を取得します。 したがって、2番目のDIVが同じTDにある場合は、次のようにコーディングできます。


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

しかし、そうではないので、next()を使用するポイントがわかりません。代わりにコーディングできます:

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


6
しかし、それは次の要素をどのように見つけるのでしょうか。.findはすべての要素を返します。
Shashwat Kumar
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.