1

jquery を使用して ap タグ内の強力なタグのすべてのインスタンスを検索し、次のように p タグにクラスを追加します。

<p><strong>Bold Text</strong></p>

となります

<p class="hasStrong"><strong>Bold Text</strong></p>

これを達成するための最良の方法がわかりません。ここにショットがあります:

$("p").find("strong").parent("p").addClass("hasStrong");

これは機能しますが、強力なタグのみを持つ段落を選択し、それ以外は何も選択しないようにしたいです。SO これにはクラスが適用されません。

<p><strong>Bold Text</strong> Here is some more text</p>

jQueryでこれを行うにはどうすればよいですか?

4

6 に答える 6

4
$('p:has(strong)').filter(function(){
    return $(this).contents().length === 1;
}).addClass('hasStrong');

http://jsfiddle.net/vbzkt/

于 2013-02-15T15:12:37.560 に答える
3
$('p').filter(function(){
     return $(this).text() == $(this).find('strong').text();
}).addClass('yourclass');
于 2013-02-15T15:10:18.313 に答える
2

p1つ以上のstrongタグがあり、テキストノードがないタグのみを選択します。

$('p').filter(function() {
    return $('strong', this).length == this.childNodes.length;
}).addClass('hasStrong');

フィドル

于 2013-02-15T15:15:59.150 に答える
2

jQuery でテキスト ノードを選択するのは簡単ではありません。これを行う必要がなければ、これははるかに簡単です。

ただし、 を使用.contentsしてテキスト ノードの長さを確認することもできます。

$("p").find("strong:only-child").each(function () {
    var $p = $(this).closest('p');
    if ($p.contents().length === 1) {
        $p.addClass('hasStrong');
    }
});

:only-child、最初から適格なノードのみをフィルタリングするのに完全に機能しますが、厳密には必須ではありません。これは、子を含むハイライトでもあることに注意してください<strong>。それをしたくない場合は$(this)、コールバックに子がないことを確認してください。

于 2013-02-15T15:10:57.583 に答える
1

テキストノードを考慮した別のソリューションを次に示します。

$("p").filter( function() {
    return this.childNodes.length === 1 && $( 'strong', this ).length;
} ).addClass("hasStrong");

デモ: http://jsfiddle.net/vDfV5/

于 2013-02-15T15:12:38.393 に答える
-3

これを行うには、ドリルダウンしてから「parent()」を使用してクラスをストロングの親に追加します。

$("p").children("strong").parent().addClass("hasStrong");

于 2013-02-15T15:10:17.020 に答える