1

<head>包含:

<!-- Foo 1.2.3 by Author Bill -->
<!-- Foo 1.2.3 by Author Joe -->

我只能用一些可能是错误的代码来做到这一点:

var hc = $('head')[0].childNodes;
for (var i = 0; i < hc.length; i++) {

    console.log(hc);

if (hc[i].nodeType == 8) { // comments have a nodeType of 8

// need something here to get a value and verify that one of the comments includes "Bill"
}
}
4

3 回答 3

2

我认为这可能对你有用:

if (hc[i].nodeType == 8) { // comments have a nodeType of 8

    var val = hc[i].nodeValue;
    if(val.indexOf("Bill") != -1){ 
     //Add glorious code!
    }   
}
于 2013-08-15T14:44:57.703 回答
1

这对我有用:

var hc = $('head')[0].childNodes;
for (var i = 0; i < hc.length; i++) {
    if (hc[i].nodeType == 8) { // comments have a nodeType of 8
         if(hc[i].nodeValue.indexOf("Bill") != -1){ 
              alert(hc[i].nodeValue);
         }
    }
}
于 2013-08-15T14:54:24.583 回答
1

我自己对这个问题的看法是创建一个简单的函数,并使用contents()来检索给定元素的子节点。功能:

function verifyComment(el, toFind) {
    return el.nodeType === 8 && el.nodeValue && el.
    nodeValue.indexOf(toFind) > -1;
}

以及使用(注意我使用了除 之外的元素head,因为 JS Fiddle 并没有真正/轻松地提供head对文档元素的访问,但是更改选择器应该也可以使其工作head):

$('#fakeHead').contents().each(function(){
    console.log(verifyComment(this, 'Bill'));
});

JS 小提琴演示

当然,作为替代方案,您可以扩展Comment节点的原型:

Comment.prototype.hasContent = function (needle) {
    return this.nodeValue.indexOf(needle) > -1;
};

$('#fakeHead').contents().each(function(){
    if (this.nodeType === 8 && this.hasContent('Bill')){
        console.log(this);
    }
});

JS 小提琴演示

参考:

于 2013-08-15T15:06:20.277 回答