2

したがって、動的コンテンツがあり、空の要素と空の子要素(存在する場合)を削除したいと思います。発生するシナリオがいくつかあります。

HTML

<p> </p>

<p><img src="image.jpg" /></p>

<p><strong></strong></p>

jQuery

$(".articleContent p").filter( function() {
    return !($.trim($(this).text()).length) && !($(this).children().length);
}).hide()

問題は、空の子要素が考慮されていないことです。微調整を試みましたが、imgまたは空の子要素が非表示になります。

提案?

4

2 に答える 2

3

この.text()メソッドは、選択した要素とそのすべての子孫のテキストを取得するため、子要素のテキストをテストする必要はありません。

$(".articleContent p").filter( function() {
            $this = $(this);
    return (!$.trim($this.text()).length && !$this.has('img').length);
}).hide()

デモ

于 2012-09-06T00:58:19.483 に答える
3

childen()テストを削除すると、機能しているように見えます。text()は、セレクター要素とすべての子孫の結合されたテキストを考慮します。

    $(".articleContent p").filter(function () {
        return !($.trim($(this).text()).length);
    }).hide(); // or replace hide() with remove()
于 2012-09-06T00:58:57.693 に答える