多个嵌套元素上的 jQuery .text('')

Uza*_*ooq 0 javascript jquery

我想从 html 中删除所有文本并仅打印标签。我最后写了这个:

var html = $('html');
var elements = html.find('*');
elements.text('');
alert(html.html());
Run Code Online (Sandbox Code Playgroud)

它只打印出来<head></head><body></body>。不是说要打印所有标签吗?我的 html 中有近 2000 个标签。

lon*_*day 5

var elements = html.find('*');
elements.text('');
Run Code Online (Sandbox Code Playgroud)

这就是说“找到下面的所有元素html,然后清空它们”。其中包括bodyhead。当它们被清空时,页面上没有其他元素,因此它们是唯一出现在html的内容中的元素。

如果您确实想要从页面中删除所有文本并保留元素,则必须使用 DOM 方法来完成:

html.find('*').each(function() {               // loop over all elements
    $(this).contents().each(function() {       // loop through each element's child nodes
        if (this.nodeType === 3) {             // if the node is a text node
            this.parentNode.removeChild(this); // remove it from the document
        }
    });
})
Run Code Online (Sandbox Code Playgroud)