我正在尝试从<li>
元素中移除最后一个<ul>
元素,只要它超过特定长度。为此,我正在做这样的事情:
var selector = "#ulelement"
if($(selector).children().length > threshold) {
$(selector + " >:last").remove();
}
我不喜欢我必须使用选择器两次的事实。有没有更短的方法来做到这一点?像“删除长度超过阈值”的想法。我想也许有一种方法可以使用live()函数来做到这一点,但我不知道如何。
答案 0 :(得分:10)
通常会缓存选择器的结果。在这里,您可以直接搜索<li>
:
var lis = $("#ulelement li");
if(lis.length > threshold) {
lis.eq(lis.length - 1).remove();
}
在这种情况下,您还可以使用单个选择器实现此目的:
$("#ulelement li:gt(4):last").remove();
即:在索引大于4(或您的阈值)的所有<li>
中,选择最后一个并将其删除。
答案 1 :(得分:4)
var ul = document.getElementById('myUL');
if (ul.childNodes.length > threshold)
ul.lastChild.parentNode.removeChild(ul.lastChild);
希望有所帮助。
答案 2 :(得分:1)
selector = '#ulelement';
while($(selector).children().length > threshHold)
{
$(selector + " li:last").remove();
}
尝试使用while循环,因为你的代码只运行一次,while会循环,直到它少于thresh hold!