如何使用jquery删除div大于x的div?

时间:2012-03-13 06:41:43

标签: jquery html size

我有这个HTML:

<div class="test">
   <div class="itsme">1</div>
   <div class="itsme">2</div>
   <div class="itsme">3</div>
   <div class="itsme">4</div>
</div>

我正在div1顶部动态添加一个新的div。

var count = jQuery('div.itsme').size();
if(count > 3){
   $('.test').find("div:last").remove();
}

这种工作方式如果我添加一个div,最后一个被删除,但它并没有真正跟踪多少div。

即使开头有10个div,但是一旦我添加了另一个,最后一个就会被删除。

为什么我要找的是总是,在这种情况下,显示3个div。如果我添加另一个div,那么最后一个被删除,如果我添加2个div,则最后2个被删除

我希望我足够清楚。

感谢,

P.S。我正在使用size(),因为lenght()似乎不起作用,chrome将其视为未定义的函数,我检查过,我有jquery 1.7 ..

5 个答案:

答案 0 :(得分:8)

if($('.itsme').length > 3){
   $('.itsme:gt(2)').remove();
}

FIDDLE

答案 1 :(得分:7)

您可以使用:gt选择器过滤掉特定索引上方的元素,然后将其删除。这将只保留三个第一要素:

$('.test .itsme:gt(2)').remove();

答案 2 :(得分:2)

你可以像这样迭代:

var count = jQuery('div.itsme').size();
if (count > 3) {
  var numTimes = count - 3;
  for (var i = 0; i < numTimes; i++) {
    $('.test').find("div:last").remove();
  }
}

答案 3 :(得分:2)

您可以使用此选择器选择最后一个div

$('.itsme').eq(-1).remove();

$('.itsme') // select all the class

eq(-1) // select one element from the array of class begin for the end.

编辑:

如果你想删除所有的div减去三个第一类,使用一个bucle:

for( var i=0; i< $('.itsme').length - 3; i++){
     $('.itsme').eq(-1).remove();
}

答案 4 :(得分:2)

这是因为你只删除了最后一个

试试这个:

jQuery('div.itsme:gt(2)').remove() // it starts at index 0