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 回答