检查ul的长度并去除li元素

时间:2010-05-30 04:45:44

标签: javascript jquery

我正在尝试从<li>元素中移除最后一个<ul>元素,只要它超过特定长度。为此,我正在做这样的事情:

var selector = "#ulelement"
if($(selector).children().length > threshold) {
   $(selector + " >:last").remove();
}

我不喜欢我必须使用选择器两次的事实。有没有更短的方法来做到这一点?像“删除长度超过阈值”的想法。我想也许有一种方法可以使用live()函数来做到这一点,但我不知道如何。

3 个答案:

答案 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!