用jQueryselectHTML注释

有没有人知道如何使用jQueryselectHTML注释节点?

<html> <head> <title>Check Test</title> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script> <script type="text/javascript"> $(function() { $("body *").each(function() { alert($(this).wrap("<span />").parent().html()); }); }); </script> </head> <body> <!-- Hello --> <p> <label for="thing">Thing Label</label> <input id="thing" type="checkbox" /> </p> 

这不接受评论。

有jQuery的评论()插件将为您做到这一点。 用法:

 var comments = $( "#foo" ).comments(); alert(comments.html()); 

这似乎做了一些相当于你正在寻找的东西:

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

如果你不想要一个插件:

 var content = jQuery('body').html(); alert(content.match(/<!--.*?-->/g)); 

这使用正则expression式。 它被设置为search由<!---->包围的任何内容,而内部写的并不重要。

注意:但我不确定,如果jQuery也返回评论。 如果没有,这种方法是行不通的。

再一次,我在比赛中迟到了,但是我认为我会回馈,因为我发现这篇文章有助于我面对最近的情况。

在我们的情况下,我们有一个广告服务提供代码块来呈现广告。

每个广告都有唯一的“航classID”。 意思相同的250×300边栏广告可以有多个航class。 所以在一个印象中,你可能会看到一个地铁广告,刷新,也许Quizno的。

不幸的是,该服务在评论中提供了这个航classID,而不像数据属性那样有用得多。 也就是说,每个评论都在一个标签内。

从上面,我可以把这个解决scheme放在一起,利用RegExp对象的JavaScript的exec()方法在注释中获得航class号:

 regexComment = new RegExp(/<!--\s*ad flight id:\s*([0-9]+)\s*-->/i); targetElement = regexComment.exec($('div.advertisement').html()); if(targetElement.length > 0) { return parseInt(targetElement[1]); } 

再次,在游戏后期道歉,但我认为提供另一种方法来解决这个问题并没有什么坏处。