剥离DOM中的无用元素

时间:2013-11-06 06:59:52

标签: javascript jquery is-empty

我想剥离DOM中包含无用空格或空的所有元素(我正在使用过时的后端系统生成一些混乱的HTML,这些元素有时会在设计中添加不需要的空格)。使用过滤器功能我能够测试特定情况,但由于某种原因,它似乎不适用于空元素,所以我试图测试是否有任何元素长度< 0然后将其删除。为什么这不起作用,有没有办法用过滤器功能呢?我试过了

    ("<br>", "", " ");

但它似乎不起作用。

stripEmpties();

function stripEmpties() {
    var domChildren = $("*").children();
    if (domChildren.length <= 0) {
        $(this).remove();
    } else {
        domChildren.filter(function () {
            return $.trim(this.innerHTML) === ("&lt;br&gt;", "&nbsp;");
        }).remove();
    }
}

实际上在玩完它后我现在看到只有最后一个匹配甚至在过滤器中使用,所以看起来我不能使用这个列表格式我已经想到了。所以我想另一个问题是,在使用过滤函数检查多个案例时,有没有办法获得类似的功能?

1 个答案:

答案 0 :(得分:0)

它并不像听起来那么容易,如果文档很大,它肯定效率不高。例如,这将删除所有br,img(没有innerHtml的标签)等标签以及:

$(function () {
    $("*").filter(function () {
        return ($(this).text().trim() === "");
    }).remove();
});

所以也许你应该使用比“*”更好的选择器,例如“div”。