jQueryを使用して、直接の子として少なくとも1つのタグを持つすべてのpタグを選択するにはどうすればよいですか?
ドキュメントの場合:
<div>
<p><a>My Link</a></p>
<p><div><a>My nested Link</a></div></p>
</div>
最初のpタグのみを返します。
jQueryを使用して、直接の子として少なくとも1つのタグを持つすべてのpタグを選択するにはどうすればよいですか?
ドキュメントの場合:
<div>
<p><a>My Link</a></p>
<p><div><a>My nested Link</a></div></p>
</div>
最初のpタグのみを返します。
おそらくこれを行うために使用する必要があると思います.filter()
。次のコードは、必要なことを実行するはずです。
$('p').filter(function() { return $(this).children('a').length > 0;});
編集:有効なHTMLを含むようにデモを変更しました(を2番目<div>
の<span>
内側に置き換えました<p>
)。
$('p:has(a)')
トリックを行います。
アップデート
タグの問題は次のfont
ように修正できます。
$('p:has(a):not(:has(font))')
アップデート2
さて、すべてをスクラップします。コメントによると、:has()
フィルターは直接の子だけを見るのではありません。a
では、逆にすべてのタグを選択してから、親がであるタグの親を選択するのはどうでしょうかp
。
$('a').parent('p')
または、a
実行できるすべてのタグを選択しないようにする
$('p > a').parent()
さらに別のアップデート
この提案をしてくれた@BoltClockに感謝します。次の構文も機能します。
$('p:has(> a)')
それは次のように簡単です:
$("div p:first-child")
id
にまたはclass
を適用しdiv
て、DOMトラバーサルを関連するブロックのみに制限するdiv
ことp
を検討することをお勧めします。
この答えは多かれ少なかれ同じことで、最後の子供を探しているだけです。
更新申し訳ありませんが、「最初のpタグ」ビットを読み間違えました。
これを試して:
$("div p:has(a)")