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

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

<!-- 
Some text
-->

谢谢

试试这个:

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

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

如果要隐藏注释,可以使用javascript将整个HTML标记(带注释)插入到DOM中。 当然,可以查看javascript,但它是从人们看到的第一个地方移开的一步。

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

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

它使用了split()函数。

首先

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

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

为我工作,可能不适用于所有情况。

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

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

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