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

时间:2014-07-23 11:20:04

标签: javascript jquery html dom

我正在使用第三方系统将内容呈现为这样的html文档:

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

<!-- componentID: 1235 -->
<div class="another-class"> .... </div>

因此系统将componentId呈现为注释。遗憾的是,系统无法将该id作为数据属性传递。我目前仍然坚持这一点。

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

由于

3 个答案:

答案 0 :(得分:7)

试试这个,它抓住了html文件中的所有评论。如果您的计划没有其他无关的评论,这可以完成这项工作。

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

答案 1 :(得分:5)

我将发布非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,它不会实现document.evaluate方法,这就是为什么只有在您不必支持IE时才能意识到并使用它。< / p>

演示:http://jsfiddle.net/z6GU3/

答案 2 :(得分:1)

您可以使用以下函数获取所有评论:

var $comments = [];
$("*").contents().filter(function() {
    return $(this)[0].nodeName == "#comment";
}).each(function() {
    $comments.push($(this));
});

console.log($comments);

http://jsfiddle.net/Whre/Zjj3n/

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

  

将它们包装在div / span中,它们位于文档中

如果评论属于下一个元素,您可以直接将其应用于元素:http://jsfiddle.net/Whre/Zjj3n/3/