jquery删除系列匹配ID中的最后一个span

时间:2012-02-17 00:03:30

标签: jquery

如何获取系列中最后一个范围的文本值,以便删除该范围及其所有内容?

在这个例子中,“克莱斯勒”跨度被认为是系列中的最后一个跨度,而不是“删除”跨度。

<span id="maketags" style="">
    <span class="make">
        Ford
        <span class="delete">delete</span>
    </span>

    <span class="make">
        Chevy
        <span class="delete">delete</span>
    </span>

    <span class="make">
        Chrysler
        <span class="delete">delete</span>
    </span>
</span>

目前,我知道我很接近这个,但它返回“删除”(我知道为什么,我只是想不出正确的方法来做到这一点)

var lastMake = $('#maketags span:last').html();

感谢。

编辑:

我的错是不清楚。我需要帮助匹配最后一个元素。我不应该添加关于目标的一点,因为我已经知道如何删除它。道歉。

6 个答案:

答案 0 :(得分:3)

如何匹配您想要匹配的内容

匹配作为#maketags的孩子的最后一个范围:

var lastMake = $('#maketags > span:last');

.html()返回匹配元素中的HTML。)

证据在这里:jsfiddle.net/tadeck/5Lm3T/

如何删除匹配的内容

这样的答案非常全面,要删除您匹配的内容,只需使用.remove()(或者,如果您希望稍后将已删除的元素与已分配的事件一起使用,请使用.detach()):

lastMake.remove();

答案 1 :(得分:2)

  

“目标是删除”克莱斯勒“范围及其中包含的”删除“范围。”

如果要删除它,则需要使用.remove()。要按类定位元素,请使用类选择器。

$('#maketags .make').last().remove();

如果您想保留.make,并且只删除其内容,请使用.empty()

$('#maketags .make').last().empty();

请注意,我使用的是.last()而不是:last选择器。

the docs中所述......

  

由于:last是jQuery扩展而不是CSS规范的一部分,因此使用:last的查询无法利用本机DOM querySelectorAll()方法提供的性能提升。

答案 2 :(得分:0)

您可以尝试:$('.make:last').remove()​

JSFiddle

答案 3 :(得分:0)

你可以这样做:

    $('#maketags span:last').remove(true);

这取决于你想要做什么。 remove()不仅会删除html,还会删除此跨度的所有事件liceners。如果您只想删除html,只需使用remove(false)。

如果你想要一个更好的fadeOut解决方案或者对删除的影响,你可以使用jquery 1.6或更高版本,你可以使用promise函数:

    $('#maketags span:last').fadeOut("slow").promise().done(function() {
            $this->remove(true);
    }

答案 4 :(得分:0)

您(可能)正在选择正确的元素。您只是不对它执行删除操作。为此,请使用jQuery的删除功能。

更改此

var lastMake = $('#maketags span:last').html();

到这个

var lastMake = $('#maketags span:last').remove();

没有必要将它分配给变量,但是你可能会发现知道所有这样的jQuery函数返回一个jQuery对象很有用(所以lastMake将包含你删除的对象)。

答案 5 :(得分:0)

您必须使用运算符&gt;

$('#maketags > span:last').html()

如果你不使用它,它将获得#maketags的最新版本。它是crsyler跨度中的删除范围。