2013-03-11 51 views
2

我有一個需要在特殊場合使用jQuery進行修剪的對象列表。對於意圖和目的,讓我們說,它看起來是這樣的:如何刪除第三個之後的每個{element}?

<div id="container"> 
    <div class="child one">stuff</div> 
    <div class="child two">stuff</div> 
    <div class="child three">stuff</div> 
    <div class="child four">stuff</div> 
    <div class="child five">stuff</div> 
</div> 

有一個簡單的方法(使用jQuery,純JS如果必要的話,我想)第三個後刪除「每一個」 .child

注意:.one, .two .three不一定按數字順序排列。

回答

5

是,使用:gt selector

$("#container > .child:gt(2)").remove(); 

...這意味着「選擇所有.child元素是#container直接孩子,是在指數2或更高版本(索引從0開始)

或者如果您不喜歡使用jQuery的擴展選擇器(因爲它們無法傳遞到瀏覽器自己的選擇器引擎),您可以使用.filter來篩選子項:

$("#container > .child").filter(function(index) { 
    return index > 2; 
}).remove(); 

如果他們是只有孩子,你可以使用.children的而不是選擇的> .child部分:

$("#container").children().filter(function(index) { 
    return index > 2; 
}).remove(); 
+0

你也可以使用'$(「#容器>:nth-​​child(n + 4)」)。remove();' - 幾乎和你自己的答案一樣:) – Pebbl 2013-03-11 16:56:39

+1

@pebbl - thanks !但由於某種原因,我不喜歡使用':n-child'選擇器。與我想的前JS問題?哈哈 @ T.J Crowder - 謝謝!我不介意jQuery的擴展選擇器(我實際上更喜歡使用'.filter'。感謝這個,作品非常棒:)(接受它的時候讓我來:)) – Xhynk 2013-03-11 16:58:22

0
$('.child').gt(2).remove(); 

這裏GT意味着GREATERTHAN

+1

我不認爲有'.gt '功能(再)。 – 2013-03-11 16:56:41

+0

但是有一個'.slice'方法可以在這種情況下執行相同的操作:'$(「。child」)。slice(2).remove();'*「將匹配元素的集合減少到指定的子集由範圍指數「* – 2013-03-11 17:16:21

1

用途:GT()選擇器和.remove()

$(document).ready(function(){ 
$('#container .child:gt(2)').remove(); 
}); 

DEMO VIEW

+0

+1爲演示,謝謝! :) – Xhynk 2013-03-11 17:01:05

相關問題