web-dev-qa-db-ja.com

JQuery、親を見つける

<ul><li><div><div><span id="thisid"></span></div></div></li></ul>

$('#thisid').parent('li');

それは明らかに動作しませんが、どのようにしてli要素を取得しますか?使用したくない:

$('#this').parent().parent().parent();

私はそれを使いたくありません。なぜなら、div要素が2つではなく、たった1つである可能性があるからです。この場合、li要素の代わりにul要素を取得します。

42
user317005
_$('#thisid').parents('li');
//                 ^ plural!
_

祖先の最初の_<li>_要素のみが必要な場合は、closest()を使用する必要があることに注意してください。

_$('#thisid').closest('li');

// `closest()` is equivalent to (but performs better than)
$('#thisid').parents('li').eq(0);
$('#thisid').parents('li').first();
_
83
Andy E
$('#thisid').parents('li')

または、最初のものだけが必要な場合:

$('#thisid').closest('li')
7
davin

シンプル、使用 parents()

var parents = $("#thisid").parents('li');
2
Jacob Relkin
_$('#thisid').parents( 'li:eq(0)' ); 
_

それを行う必要があります。これにより、検索するタグに一致する最初の(:eq(0))親が得られます。

2
Decent Dabbler
$('li').has('#thisid')

http://api.jquery.com/has/

1
generalhenry

「親」よりも「最も近い」方が好きです。

親は、ドキュメントのルート要素までDOMツリーを上に移動し、各祖先要素を一時的なコレクションに追加します。その後、セレクターが提供されている場合、そのコレクションに基づいてそのコレクションをフィルターします。

どこで

提供されたセレクターに一致するものが見つかるまで、DOMツリーを上に移動します。

彼らが結果として与える最も重要なこと:

Praents:返されたjQueryオブジェクトには、元のセットの各要素に対して、ドキュメントの逆順に0個以上の要素が含まれています。

最も近い:返されたjQueryオブジェクトには、元のセットの各要素に対してドキュメント順に0または1つの要素が含まれています

$('#thisid').closest('li');

このリンクに従う

1
Uzair Xlade

実際に$("#thisid").closest('li')を使用したい場合があります。これは、選択されたノードからDOMツリーを上にたどり、最初に一致する祖先を返しますが、.parents()は親ノードから移動し、そのフィルターに一致するすべての祖先ノードを返します。詳細については、 here を参照してください。