1

我没有看到任何关于在没有特定顺序的情况下删除一定数量元素的明确文档,当然有很多方法可以删除一个包含 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 的来源。

4

3 回答 3

5

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

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

演示:小提琴

于 2013-09-30T16:20:16.020 回答
2

这听起来像是:lt选择器的工作:

    $('.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/

于 2013-09-30T16:19:25.443 回答
0

我会使用 lo dash 或 underscore 从数组中获取第一个项目并删除它们,即

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

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

于 2013-09-30T16:27:40.087 回答