jQueryを使用して最初の親DIVを選択する方法


95
var classes = $(this).attr('class').split(' '); // this gets the current element classes

var classes = $(this).parent().attr('class').split(' '); // this gets the parent classes.

上記の状況の親は、アンコールです。

$(this)の最初の親DIVを取得したい場合、コードはどのようになりますか?

var classes = $(this).div:parent().attr('class').split(' '); // just a quick try.

*基本的に、$(this)の最初の親DIVのクラスを取得します。

どうも

回答:


161

.closest()指定されたセレクターまでDOMツリーを上に移動するために使用します。

var classes = $(this).parent().closest('div').attr('class').split(' '); // this gets the parent classes.

10
parents("div")トラバースしていて、.eq(0)その後に使用する必要があるすべての親divを返します。これは、必要なものだけが返されることを確認するためです
meo

3
パフォーマンスの方が優れていることを覚えておいてください.parents('div').eq(0)-jQueryによって追跡された財布CSSセレクターを使用して最初の要素のみにフィルターをかけると、パフォーマンスがわずかに向上します-jQueryの「その他の注意事項」セクションを参照してください:eqドキュメント
Noah Whitmore

@NoahWhitmore修正しました。closest()親以外のすべての親を返さないように使用されdivます。
シェフ、2014

41

.closest()指定されたセレクターに一致する最初の祖先要素を取得するを使用します'div'

var classes = $(this).closest('div').attr('class').split(' ');

編集:

@Shefが述べ.closest()たように、DIVでもある場合、現在の要素を返します。これを考慮に入れるには、.parent()最初に次を使用します。

var classes = $(this).parent().closest('div').attr('class').split(' ');

5
.closest()$(this)DIV要素の場合、それ自体と一致します。
シェフ、2011

@シェフ、それは私にとって新しい情報でした、ありがとう。私はこれを反映するように私の回答を編集しました。
Tatu Ulmanen、2011

3
あなたは単に使用することができます.parents("div").eq(0)
meo

8

divの場合、これは親になります。その後、クラスを取得します。

var div = $(this).parent("div");
var _class = div.attr("class");

1
@meoそれが質問の答えです。
Daniel West


0

最良の選択肢の2つは

$(this).parent("div:first")

$(this).parent().closest('div')

そしてもちろん、あなたはクラスattrを見つけることができます

$(this).parent("div:first").attr("class")

$(this).parent().closest('div').attr("class")
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.