如何根据特定索引值筛选子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>
答案 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
选择器
答案 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]);
答案 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