2011-10-14 28 views
1

我將如何過濾子div的列表並根據特定的索引值分離div。我將如何過濾div和分離

因此,例如,我想能夠決定我想分離哪個索引。例如,假設我有一個名爲持有者的元素內有10個子div。我希望能夠通過它們進行過濾,並刪除以避免說出這個序列 [0,3,5,7]

上面的順序可能會改變。當我通過div進行過濾時,我希望能夠將它們分離,然後再使用jquery將它們添加回來。

我看着過濾器的方法,但不知道如何過濾我想要的元素索引。任何人都有好的想法。

<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

通過分離你的意思是隱藏? – Ben

+0

含義jquery .detach() – Chapsterj

回答

1

這裏有一個解決方案,如果你想依靠格中的文本:

$('#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(); 
    } 
}); 
+0

+1做得很好。 –

+0

爲什麼把'var filter'放在循環中? – bricker

+0

@bricker它的位置是說明性的。 – Candide

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/

+0

這將工作,但它不允許數字改變。我希望能夠在序列中或10或之間有一個數字。數字可能是隨機的。我希望能夠傳遞一組數字,並且可以基於數組數組來過濾div。 – Chapsterj

+0

正確Chapsterj。我只是寫了一個函數去處理這個問題,但是@Ingenu打敗了我。用他的答案。 –

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