我将如何过滤div和分离

时间:2011-10-14 03:54:04

标签: jquery

如何根据特定索引值筛选子div列表并分离div。

因此,例如,我希望能够决定我想要分离的索引。例如,假设我在一个名为holder的元素中有10个子div。我想能够过滤它们并删除,以免说出这个序列 [0,3,5,7]

上述顺序可能会改变。当我过滤div时,我希望能够分离它们,然后再使用jquery将它们重新添加回来。

我查看了filter方法,但不知道如何只过滤我想要的元素索引。任何人都有任何好主意。

<div id="holder">
 <div>1</div>
 <div>2</div>
 <div>3</div>
 <div>4</div>
 <div>5</div>
 <div>6</div>
 <div>7</div>
 <div>8</div>
 <div>9</div>
 <div>10</div>
</div>

4 个答案:

答案 0 :(得分:1)

如果您想依赖div中的文本,这是一个解决方案:

$('#holder div').each(function(){
    var filter = ['0', '3', '5', '7'];

    if($.inArray($(this).text(), filter) > -1)
    {
        $(this).detach();
    }
});

和另一种解决方案,如果你想依赖索引:

$('#holder div').each(function(i){
    var filter = [0, 3, 5, 7];

    if($.inArray(i, filter) > -1)
    {
        $(this).detach();
    }
});

答案 1 :(得分:0)

尝试n-th child选择器

http://api.jquery.com/nth-child-selector/

答案 2 :(得分:0)

如果我正确理解了这个问题,你可以这样做......因为订单等可以改变。

var a = $('#holder div:eq(0), #holder div:eq(3), #holder div:eq(5)').detach();

$('#holder').append(a[0], a[1], a[2]);

示例:http://jsfiddle.net/wHbVq/

答案 3 :(得分:0)

以下是使用filter的示例。您只需返回要保留的索引的truthy值,这意味着您只想保留应该分离的元素。

$('#holder div').filter(function(i){
  var filter = ['0', '3', '5', '7'];
  return $.inArray($(this).text(), filter) > -1);
}).detach();

或者,您可以使用选择器进行基于索引的过滤:

$('#holder div').filter(':eq(0), :eq(3), :eq(5), :eq(7)').detach();

对于线性过滤,您应该使用:nth-child()

$('#holder div').filter(':nth-child(2n+3)').detach() //indices 3, 5, 7, 9, etc