从 html 中递归删除空节点

Mob*_*y04 1 javascript string jquery

我想从一些 html 字符串中删除空元素。我知道我可以运行类似的东西:

$('p').each(function(index, item) {
    if($.trim($(item).text()) === "") {
        $(item).remove();
    }
});
Run Code Online (Sandbox Code Playgroud)

问题是我想删除所有空节点 - 不仅仅是 p。此外,我希望脚本将 p 节点<p><span></span></p>视为空,因为它仅包含空元素。你有一些类似的简单实现吗?

[编辑] 我忘了补充:我可以使用 jQuery,但我想遍历和编辑的 html 是一个字符串 - 而不是实际的文档。那么我该如何做这个操作呢?我尝试使用var html = $.parseHTML('<p><span></span></p>')但每次循环后我仍然得到相同的字符串......

Pau*_*aul 5

最近我正在寻找同样问题的解决方案。递归函数就是答案。

function removeEmptyTagsRecursively($el) {
    if ($el.children().length) {

        $el.children().each(function(i, val) {
            removeEmptyTagsRecursively($(val));
        });

        $el.children(':empty').remove();
    }
}
Run Code Online (Sandbox Code Playgroud)

在这里小提琴:https : //jsfiddle.net/635utakr/9/