使用jQuery选择包含在注释中的元素
Use jQuery to select an element that is contained within a comment
我有一个奇怪的问题,我想知道这是否可能。
我正在解析DOM,有这样一个元素:
<!-- <a class="pager" title="next" href="www.text.com">NEXT</a> -->
我需要能够使用jQuery选择此元素并返回其href
值。我试过了:
$('a.pager[title="Next"]').attr('href');
,但没有用-从这里阅读选择HTML评论与jQuery,似乎jQuery只能选择元素与特定的nodetype
。
是否可以从上面的HTML
元素返回值www.text.com
?为了让事情变得更棘手,我需要在不依赖jQuery插件的情况下完成它-本机Javascript或纯jQuery。
下面的代码返回整个注释(以及该页上所有其他注释中包含的文本):
$("*")
.contents()
.filter(function(){ return this.nodeType == 8;})
.each(function(){ alert(this.nodeValue);});
但我只需要返回a href
的值,而没有其他注释。想法吗?
实际上,你所要做的就是修剪它:
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;
});
小提琴
选择注释后,需要将其文本内容解析为HTML,然后才能可靠地遍历编码的DOM:
var matches = [];
$("*").contents().each(function(){
if(this.nodeType != 8) return;
var $div = $("<div>");
$div.append(this.nodeValue);
$div.find("a.pager[title='next']").each(function(){
//replace $(this).attr("href") with this.href if you don't mind
//relative URLs getting converted to absolute URLs
matches.push($(this).attr("href"))
});
});
$("*")
.contents()
.filter(function(){ return this.nodeType == 8;})
.each(function(){
var regex = new RegExp('href='"(.*)'"','g');
var hrefValue = regex.exec(this.nodeValue)[1];
alert(hrefValue);
});
相关文章:
- CKEditor Widget-阻止编辑可编辑元素本身
- 如何设置html元素填充的动画
- 如何将HTML id分配给元素,以及如何将JavaScript应用于元素
- 使用 jQuery 的 .on 函数如何获取事件的原始元素
- 使用clickToggle并在单击另一个元素时关闭元素
- 单击时将焦点更改为元素
- 表追加而不附加最后一个元素
- 如何在jQuery中获取元素的形式
- 我可以获得相对于被点击元素的确切点击位置吗
- 在函数中添加数组元素的数值
- jQuery:如果元素为空,不包括空格和注释
- XPath 表达式,用于按源顺序选择 *所有* 元素、文本节点和注释节点
- 在HTML注释之前插入DIV元素
- 使用jQuery选择包含在注释中的元素
- 如何使disqus注释javascript代码在聚合物自定义元素中工作
- Disqus 注释在聚合物自定义元素中不起作用
- 如何在点击时将HTML标记元素更改为输入文本,以便用户可以编辑注释
- 删除元素会留下ng-repeat注释
- 如何在javascript中获得注释元素的句柄?
- 是否有可能通过 JavaScript 获取对注释元素/块的引用