<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要素を取得します。
_$('#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();
_
$('#thisid').parents('li')
または、最初のものだけが必要な場合:
$('#thisid').closest('li')
シンプル、使用 parents()
var parents = $("#thisid").parents('li');
_$('#thisid').parents( 'li:eq(0)' );
_
それを行う必要があります。これにより、検索するタグに一致する最初の(:eq(0)
)親が得られます。
$('li').has('#thisid')
「親」よりも「最も近い」方が好きです。
親は、ドキュメントのルート要素までDOMツリーを上に移動し、各祖先要素を一時的なコレクションに追加します。その後、セレクターが提供されている場合、そのコレクションに基づいてそのコレクションをフィルターします。
どこで
提供されたセレクターに一致するものが見つかるまで、DOMツリーを上に移動します。
彼らが結果として与える最も重要なこと:
Praents:返されたjQueryオブジェクトには、元のセットの各要素に対して、ドキュメントの逆順に0個以上の要素が含まれています。
最も近い:返されたjQueryオブジェクトには、元のセットの各要素に対してドキュメント順に0または1つの要素が含まれています
$('#thisid').closest('li');
実際に$("#thisid").closest('li')
を使用したい場合があります。これは、選択されたノードからDOMツリーを上にたどり、最初に一致する祖先を返しますが、.parents()
は親ノードから移動し、そのフィルターに一致するすべての祖先ノードを返します。詳細については、 here を参照してください。