使用.remove()删除x个元素

时间:2013-09-30 16:14:06

标签: jquery

我没有看到关于删除某些元素而没有特定顺序的任何明确文档,当然有很多方法可以删除5个项目的列表,如果它们按照该顺序排列。如果有不希望在中间删除的元素怎么办?让我举个例子

FIDDLE :下面只是这个小提琴的碎片,只是看看小提琴会更容易。

HTML     

<div class="item empty">Empty</div>
<div class="item empty">Empty</div>
<div class="item editable">Editable</div>
<div class="item empty">Empty</div>

</div>

<button class="demo">Demo</button>

的jQuery

$('.demo').click(function() {
var length = $('.item').length,
    columns = 12/6,
    addColumn = columns - length

//Set this for subtracting elements if addColumn is a negitive number    
if(addColumn < 0) {
    //Want to remove the amount of items which is -2 in this case
    //Obviously I just threw in .eq just for the petes sake, but not sure about the syntax
    $('.item.empty').eq(/*Remove whatever amount of addColumn */ ).remove()
}

//Equals -2
alert(addColumn)

});

所以,为了清楚起见,我试图根据传递给.empty变量的金额来移除addColumn项的数量,在这种情况下,其静态设置为-2。

所以我问addColumn < 0是否为负数,然后我们使用.remove()进行减法,我需要删除等于.empty变量的addColumn项的数量。

12/6来自12列网格,6是两列布局span6 span6所以如果布局设置为4列,我们需要删除2列,这是-2来自。

3 个答案:

答案 0 :(得分:5)

我认为.slice()将完成这项工作

$('.item.empty').slice(addColumn).remove()

演示:Fiddle

答案 1 :(得分:2)

这听起来像是:lt selector

的工作
    $('.item.empty:lt('+num+')').remove(); // zero-based index

http://jsfiddle.net/mblase75/D5k6D/

您还可以将否定索引传递给:gt,以移除最后 num-1元素:

    $('.item.empty:gt('+(-1-num)+')').remove(); // 'num' is positive

http://jsfiddle.net/mblase75/bG2qq/

答案 2 :(得分:0)

我使用短划线或下划线从阵列中获取第一个项目并将其删除,即

$(_.first($('.item.empty'), -addColumn)).remove();

请参阅http://jsfiddle.net/7NRLN/6/