Javascript删除最后一次出现

时间:2014-06-02 14:31:38

标签: javascript jquery

<div class="breadcrumbs">
    <a title="Go to Page." href="http://www.domain.com/dev" class="home">Home Page</a> &gt; <a title="Go to the News category archives." href="http://www.domain.com/dev"/topics/news/" class="taxonomy category">News</a> &gt; <span>News</span>
</div>

在上面的示例中,有2个分隔符,我使用以下jQuery('.breadcrumbs .category').remove();删除了指向新闻的链接,但这让我感到

<div class="breadcrumbs">
    <a title="Go to Page." href="http://www.domain.com/dev" class="home">Home Page</a> &gt; &gt; <span>News</span>
</div>

删除&gt;之一的最佳方式是什么?

5 个答案:

答案 0 :(得分:5)

不要担心删除最后一次出现,请使用css将(表达式)>放在正确的位置:

.breadcrumbs a + a::before {
    content: '>';
}

或者,由于当前页面是span,您可能更喜欢:

.breadcrumbs a::after {
    content: '>';
}

答案 1 :(得分:4)

  

删除&gt;之一的最佳方式是什么?

首先修复生成它的插件(以及News链接)。

  

通过JavaScript删除它的最简单方法是什么?

这样做:

jQuery('.breadcrumbs .category').each(function() {
    $([this, this.nextSibling]).remove();
});

答案 2 :(得分:0)

我的解决方案与@ David的相同,但使用单冒号语法,浏览器支持,并删除恼人的链接着色和下划线(不会使>不是链接。

.breadcrumbs > a:after{
    content: '>';
    padding-left: 2px;
    display:inline-block;
}

.breadcrumbs > a:link:after{
    color: #000;
    text-decoration: none;
}

Fiddler

答案 3 :(得分:0)

更新:我更好地理解了这个问题。

更新2:替换为匹配的字符串,如Bergi建议的那样。

我想出了以下脚本来完成你需要它做的事情:

jQuery(".breadcrumbs .category").remove();
var resultingHtml = jQuery(".breadcrumbs").html();
resultingHtml = resultingHtml.replace(/(\s*&gt;){2,}/mi, "$1");
jQuery(".breadcrumbs").html(resultingHtml);

此脚本的作用是先删除面包屑中的最后一个节点,然后用一个&gt;替换任何双(或更多)gt;文本。

您可以在JSFiddle

上看到它

答案 4 :(得分:0)

灵感来自another question on stackoverflow

$.fn.nextNode = function(){ var contents = $(this).parent().contents(); return contents.get(contents.index(this)+1); } $('.breadcrumbs .category').nextNode().remove(); $('.breadcrumbs .category').remove();