是否可以使用jquery从dom中删除html注释

时间:2010-03-02 16:09:22

标签: jquery

只是想知道是否有办法使用jquery删除html注释。

<!-- <div id="main">Some text </div> -->

谢谢

5 个答案:

答案 0 :(得分:39)

试试这个:

$('*').contents().each(function() {
    if(this.nodeType === Node.COMMENT_NODE) {
        $(this).remove();
    }
});

编辑:这会从DOM中删除元素。浏览器通常存储可通过菜单项访问的原始页面源的副本。这不会更新。

如果要隐藏评论,可以使用javascript将整个HTML标记(带注释)插入DOM。当然,可以查看javascript,但这是从人们首先看到的第一步中删除的步骤。

答案 1 :(得分:1)

不是我知道的。但我不明白它的用途是什么。只有在您查看pagesource时才会看到注释,并且大多数(如果不是全部)具有视图源选项的浏览器默认会在javascript加载之前为您提供源。

答案 2 :(得分:1)

这可能是一种轻微的hacky方式,但它对我来说绝对是一种享受。

它使用了split()函数。

首先

codeWithComments = $("*yourelementhere*").html();
var withoutComments = codeWithComments.split('-->');
$("*yourelementhere*").html(withoutComments[withoutComments.length-1]);

这将在最后一个' - &gt;'之后直接用代码替换给定元素的HTML这当然假设您在给定元素中只有一组注释。您可以在评论的最后一行拆分以获得完全匹配。

为我工作,可能无法在所有情况下都有效。

答案 3 :(得分:0)

我在脚本尝试访问IFrame内容时遇到了错误。 这是一个正在跳过IFrame的修改版本:

$('*')
.filter((idx, el) => !(el instanceof HTMLIFrameElement))
.contents()
.each(() => {
    try {
        if(this.nodeType === Node.COMMENT_NODE) {
            $(this).remove();
        }
    } catch (e) {
        console.error(e);
    }
});

答案 4 :(得分:-6)

我几乎肯定某些评论实际上并不是DOM的一部分。它们是原始HTML代码的一部分,但是当浏览器将其转换为DOM时,它们会被剥离,因为它们没有用于呈现的目的。