Javascript 是否可以在HTML文档中找到所有注释并将它们包装在div中?

Javascript 是否可以在HTML文档中找到所有注释并将它们包装在div中?,javascript,jquery,html,dom,Javascript,Jquery,Html,Dom,我正在使用第三方系统,该系统将内容呈现为html文档,如下所示: <!-- componentID: 1234 --> <div class="some-class"> .... </div> <!-- componentID: 1235 --> <div class="another-class"> .... </div> var $comments = []; $("*").contents().filter(fun

我正在使用第三方系统,该系统将内容呈现为html文档,如下所示:

<!-- componentID: 1234 -->
<div class="some-class"> .... </div>

<!-- componentID: 1235 -->
<div class="another-class"> .... </div>
var $comments = [];
$("*").contents().filter(function() {
    return $(this)[0].nodeName == "#comment";
}).each(function() {
    $comments.push($(this));
});

console.log($comments);

.... 
.... 
因此,系统将该组件呈现为注释。遗憾的是,系统无法将该id作为数据属性传递。我现在被这个困扰着

是否可以找到所有这些注释并将它们包装在文档中的div/span中?然后我可以访问该字符串并用正则表达式获取id


谢谢

试试这个,它会抓取html文件中的所有注释。如果没有其他与你的计划无关的评论,这可以完成这项工作

$(function() {
    $("*").contents().filter(function(){
        return this.nodeType == 8;
    }).each(function(i, e){
        alert(e.nodeValue);
    });
});

您可以使用如下函数获取所有注释:

<!-- componentID: 1234 -->
<div class="some-class"> .... </div>

<!-- componentID: 1235 -->
<div class="another-class"> .... </div>
var $comments = [];
$("*").contents().filter(function() {
    return $(this)[0].nodeName == "#comment";
}).each(function() {
    $comments.push($(this));
});

console.log($comments);

不幸的是,我不明白你的意思

将它们放在文档中的div/span中


如果注释属于下一个元素,您可以直接将其应用于该元素:

我将发布非jQuery解决方案,比遍历整个DOM树更有效:

var x = document.evaluate('//comment()', document, null, XPathResult.ANY_TYPE, null),
    comment = x.iterateNext();

while (comment) {
    alert(comment.textContent);
    comment = x.iterateNext();
}
但是,此解决方案不适用于IE,它不实现
文档。评估
方法,这就是为什么只有在不支持IE时才知道并使用它的原因


演示:不客气。事实上,我仍然很惊讶有一种方法可以从HTML中获取评论:)@Regent comment也是DOM树中的一个节点,所以可以像其他节点一样获取它。谢谢,我会记住您,先生,是个天才。这正是我需要的。许多的thanks@spinners很高兴,我能帮助你。关于“将它们放在文档中的div/span中”:OP意味着用HTML标记将
包装成类似
的内容。但是,正如您所知,有一种更简单的方法来获取评论文本