0

jQueryを使用して、直接の子として少なくとも1つのタグを持つすべてのpタグを選択するにはどうすればよいですか?

ドキュメントの場合:

<div>
    <p><a>My Link</a></p>
    <p><div><a>My nested Link</a></div></p>
</div>

最初のpタグのみを返します。

4

3 に答える 3

1

おそらくこれを行うために使用する必要があると思います.filter()。次のコードは、必要なことを実行するはずです。

$('p').filter(function() { return $(this).children('a').length > 0;});

jsFiddleデモ

編集:有効なHTMLを含むようにデモを変更しました(を2番目<div><span>内側に置き換えました<p>)。

于 2012-05-02T23:09:24.330 に答える
1

$('p:has(a)')

トリックを行います。

http://jsfiddle.net/xKc8T/

アップデート

タグの問題は次のfontように修正できます。

$('p:has(a):not(:has(font))')

http://jsfiddle.net/xKc8T/1/

アップデート2

さて、すべてをスクラップします。コメントによると、:has()フィルターは直接の子だけを見るのではありません。aでは、逆にすべてのタグを選択してから、親がであるタグの親を選択するのはどうでしょうかp

$('a').parent('p')

または、a実行できるすべてのタグを選択しないようにする

$('p > a').parent()

http://jsfiddle.net/xKc8T/3/

さらに別のアップデート

この提案をしてくれた@BoltClockに感謝します。次の構文も機能します。

$('p:has(> a)')

http://jsfiddle.net/xKc8T/4/

于 2012-05-02T23:10:36.493 に答える
0

それは次のように簡単です:

$("div p:first-child")

idにまたはclassを適用しdivて、DOMトラバーサルを関連するブロックのみに制限するdivことpを検討することをお勧めします。

この答えは多かれ少なかれ同じことで、最後の子供を探しているだけです。

更新申し訳ありませんが、「最初のpタグ」ビットを読み間違えました。

これを試して:

$("div p:has(a)")
于 2012-05-02T23:03:52.960 に答える