我正在使用第三方系统将内容呈现为这样的html文档:
<!-- componentID: 1234 -->
<div class="some-class"> .... </div>
<!-- componentID: 1235 -->
<div class="another-class"> .... </div>
因此系统将componentId呈现为注释。遗憾的是,系统无法将该id作为数据属性传递。我目前仍然坚持这一点。
是否可以找到所有这些注释并将它们包含在文档中的div / span中?然后我可以访问该字符串并使用正则表达式获取id。
由于
答案 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>
答案 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/