只是想知道是否有办法使用jquery删除html注释。
<!-- <div id="main">Some text </div> -->
谢谢
答案 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时,它们会被剥离,因为它们没有用于呈现的目的。