javascript - 使用 jQuery 选择评论中包含的元素

标签 javascript jquery

我有一个有点奇怪的问题,我想知道这是否可能。

我正在解析 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');

FIDDLE

编辑:

为了使其更具体,您可以随时进行一些字符串匹配:

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;
});

FIDDLE

关于javascript - 使用 jQuery 选择评论中包含的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17211252/

相关文章:

javascript - e.stopPropagation() - 单击的元素是传播元素还是原始元素?

javascript - 更改倒计时持续时间

Javascript嵌套循环输出带有文本的矩形

带有 Wordpress 的 jQuery Masonry 无法正确显示

javascript - 纯 JavaScript 中的 jQuery 函数

jQuery 延迟 : $. when() 与多个对象

javascript - 需要对显示内容的 ajax 数据结果加载效果

javascript - 我是在分配对函数的引用还是字符串形式的函数?

javascript - 多个div Vticker的jquery选择器

javascript - 创建覆盖 View 并将其渲染在主干的动态 div 中