jquery删除空元素及其空子

时间:2012-09-06 00:33:25

标签: jquery

所以我有动态内容,想要删除空元素和空子元素(如果有的话)。有几种情况发生:

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,要么隐藏空子元素。

建议?

2 个答案:

答案 0 :(得分:3)

.text()方法获取所选元素及其所有后代的文本,因此您不需要测试子元素的文本。

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

DEMO

答案 1 :(得分:3)

如果你删除了children()测试它似乎工作,text()会考虑选择器元素和所有后代的组合文本。

    $(".articleContent p").filter(function () {
        return !($.trim($(this).text()).length);
    }).hide(); // or replace hide() with remove()