私はアイテムをトラバース選択するために最も近いものを使用したい、以下のように私のhtml:
<span id='target'></span>
<a></a>
jquery
assume 'a' = $(this),
then I do $(this).closest('#target');
しかし、それは #target を選択していないようです..何が問題なのですか?
私はアイテムをトラバース選択するために最も近いものを使用したい、以下のように私のhtml:
<span id='target'></span>
<a></a>
jquery
assume 'a' = $(this),
then I do $(this).closest('#target');
しかし、それは #target を選択していないようです..何が問題なのですか?
Closest('#target')
タグは親ではなくa
兄弟であるため、ここでは機能しません。これらの両方の親要素を見つけるためにspan#target
使用してから、検索を実行してスパンを取得するか、単に兄弟スパンを取得するために使用します。Closest
target
.prev
target
$(this).closest("div").find("#target");
また
$(this).prev("#target");
id があるので、id はドキュメント内で一意であるため、id セレクターとして使用できます。この場合、リレーショナル ルックアップを使用する必要はありません。
var target = $('#target')
anchor
要素の後に要素が続く上記のようなパターンがある場合は、 のspan
代わりに class 属性を使用しますid
。このような場合、span
は要素の前の兄弟であるため、 .prev()anchor
を使用する必要があります。
<span class='target'></span>
<a></a>
var target = $(this).prev('.target');// $(this).prev() is sufficient
.closest()は、兄弟要素ではなく、祖先要素を探します。
Closes は兄弟をチェックせず、要素とその親をチェックしますjQuery.closest
セット内の各要素について、要素自体をテストし、DOM ツリー内のその祖先をたどることによって、セレクターに一致する最初の要素を取得します。
あなたの場合<a>
、 と<span>
は兄弟であり、親子でclosest
はありませspan
んa
。