对文章进行迭代,并去掉html的锚标记



HTML代码

<article class="evn-mn-pane">
    <h2><a href="somelink.php">leborium</a></h2>
    <div class="evn-date">20 June, 2013 |  Dr.some name some name1</div>
    <figure>
        <img src="images/events/speakers/no-image.jpg" alt="Dr. Somename"/>
            <figcaption>test link tested some dummy text this...
                <a href="somlink.php">more</a>
            </figcaption>
            <div class="clear"></div>
    </figure>
</article>
<article class="evn-mn-pane">
    <h2><a href="somelink.php">leborium</a></h2>
    <div class="evn-date">20 June, 2013 |  Dr.some name some name1</div>
    <figure>
        <img src="images/events/speakers/no-image.jpg" alt="Dr. Somename"/>
            <figcaption>test link tested some dummy text this...
                <a href="somlink.php">more</a>
            </figcaption>
            <div class="clear"></div>
    </figure>
</article>

Jquery代码

$('article').each(function(){
    alert($(this).find('figure > figcaption').html());
});

结果

测试链接测试了一些伪文本。。。

          <a href="somlink.php">more</a>

预期结果

测试链接测试了一些伪文本。。。

尝试了此SO链接

已尝试的代码

$('article').each(function(){
    alert($(this).find('figure > figcaption').contents(':not(a)').html());
});

正在获取结果

未定义

JSFIDDLE

如何达到预期结果?任何帮助都将不胜感激仅供参考:我正在使用jquery1.8.3

更新

我想获得除锚定标记之外的所有其他标记,并期望使用克隆方法获得除锚标记之外的结果。

contents不接受任何参数。即使在a之后添加更多文本,也可以使用此方法。

$('article').each(function() {
    var t = $(this).find('figure > figcaption').contents().filter(function() {
        return this.nodeType === 3; //3 = TEXT_NODE
    });
    alert(t.text());
});

更新的JSFiddle

如果您想要figcaption中除a中的文本外的所有文本,请使用以下方法:

return this.nodeType === 3 || this.tagName !== 'A';

关于nodeType属性

<a id='a'>asdf</a>
var a = document.getElementById('a');
a.nodeType === Node.ELEMENT_NODE; //true
a.firstChild.nodeType == Node.TEXT_NODE; //true asdf

有关节点类型的更多信息

这是一种快速而肮脏的方法。您制作一个克隆并删除所有子项。显然,您只能应用筛选来删除某些子项。代码:

$('article').each(function(){
   var $cap =  $(this).find('figcaption')
   .clone()
   .children()
   .remove()
   .end();
   alert($cap.text());
});

文本是第一个子节点:

$('article').each(function(){
    console.log($(this).find('figure > figcaption')[0].childNodes[0].data);
});

FIDDLE演示

像这样查找并删除a(更新为不从HTML中删除链接):

$('article').each(function(){
    var div = $("<div>" + $(this).find('figure > figcaption').html() + "</div>");
    div.find('a').remove();
    alert(div.html());
});

jsFiddle

相关内容

  • 没有找到相关文章

最新更新