0

我想去除 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();
    }
}

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

4

1 回答 1

0

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

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

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

于 2013-11-06T07:35:32.200 回答