我有这个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 ..
答案 0 :(得分:8)
if($('.itsme').length > 3){
$('.itsme:gt(2)').remove();
}
答案 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