如何获取系列中最后一个范围的文本值,以便删除该范围及其所有内容?
在这个例子中,“克莱斯勒”跨度被认为是系列中的最后一个跨度,而不是“删除”跨度。
<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();
感谢。
编辑:
我的错是不清楚。我需要帮助匹配最后一个元素。我不应该添加关于目标的一点,因为我已经知道如何删除它。道歉。
答案 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
的查询无法利用本机DOMquerySelectorAll()
方法提供的性能提升。
答案 2 :(得分:0)
您可以尝试:$('.make:last').remove()
。
答案 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跨度中的删除范围。