我有一个有点奇怪的问题,我想知道这是否可能。
我正在解析 DOM,有一个像这样的元素:
<!-- <a class="pager" title="next" href="www.text.com">NEXT</a> -->
我需要能够使用 jQuery 选择此元素并返回其 href
值。我试过这个:
$('a.pager[title="Next"]').attr('href');
但无济于事 - 从此处阅读 Selecting HTML Comments with jQuery似乎 jQuery 只能选择具有特定 nodetype
的元素。
是否可以从上面的 HTML
元素返回值 www.text.com
?为了让事情变得更棘手,我需要在不依赖 jQuery 插件的情况下完成它 - 请使用 native Javascript 或纯 jQuery。
以下代码返回整个评论(以及页面上所有其他评论中包含的文本):
$("*")
.contents()
.filter(function(){ return this.nodeType == 8;})
.each(function(){ alert(this.nodeValue);});
但我只需要返回 a href
的值,而不需要其他注释。有想法吗?
最佳答案
实际上,您所要做的就是 trim 它:
var markup = $("*").contents().filter(function(){
return this.nodeType == 8;
}).get(0).nodeValue;
var href = $($.trim(markup)).attr('href');
编辑:
为了使其更具体,您可以随时进行一些字符串匹配:
var markup = $("*").contents().filter(function(){
return this.nodeType == 8 && this.nodeValue.indexOf('class="pager"') != -1;
});
再次编辑:
你也可以这样做:
var href = $.map($("*").contents(), function(el) {
var html = $.parseHTML( $.trim(el.nodeValue) ),
anchor = $('<div />').append(html).find('a.pager[title="next"]');
return el.nodeType === 8 && anchor.length ? anchor.attr('href') : null;
});
关于javascript - 使用 jQuery 选择评论中包含的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17211252/