2012-02-02 146 views
10
<div class="box"></div> 
<div class="box"></div> <!-- Hide --> 
<div class="box"></div> <!-- Hide --> 
<div class="box"></div> <!-- Hide --> 

我需要隱藏所有的div,但不是第一個div。只刪除jquery選擇中的第一個元素

我可以做這樣的事情:

jQuery('.box').hide(); 
jQuery('.box').first().show(); 

有沒有辦法.hide() EM之前刪除從數組中第一.box

+0

性能比較:HTTP:// jsperf。 com/remove-only-the-first-element-from-a-jquery-selection – zch 2013-06-23 20:12:33

回答

30
jQuery('.box').slice(1).hide() 
+0

+1,最好的方式去(和'切片'是一個未充分利用的功能)。 – 2012-02-02 22:14:51

+3

+1簡單的解決方案。注意:「有沒有辦法刪除**第一個** ...」,如果你想刪除第一個**,你必須使用'.slice(0)'。 :-) – 2013-01-17 16:11:53

+7

@John從jquery集中刪除第一個元素,您需要使用slice(1)而不是slice(0),slice方法使用從零開始的索引,但是新切片會在索引處切分_before_。因此,切片(1)切割具有索引1的元素(即在第二元素之前)的集合_before_實際上移除第一個元素。切片(0)在第一個元素之前切割,因此它只返回整個原始集合。 – metatron 2013-06-22 20:58:03

10
jQuery('.box:not(:first)').hide(); 

http://jsfiddle.net/8wMFc/

+0

我會說*這*是一堆最乾淨的答案 – 2012-02-02 22:14:01

1
jQuery('.box').not(':eq(0)').hide(); 

這麼說,我更喜歡殘留羨慕的解決方案。

1

嘗試:

jQuery('.box:gt(0)').hide(); 
+0

gt =大於? – dynamic 2012-02-02 22:41:07

+0

@ yes123 yep .... – 2012-02-02 22:41:34

6

嘗試

jQuery('.box').not(':first').hide(); 

比較:

@TJCrowder是對我建議代碼的功能,可以通過.slice避免爲額外的解析由@zch建議

HERE是我的代碼(爲0.8ms)的輪廓HERE是@ ZCH代碼(0.53ms)的輪廓看到了差距提交答案

+0

我在懷疑是否接受你的答案或zch答案片(1) – dynamic 2012-02-02 22:11:43

+0

嗯,我相信這是最易讀的代碼,我會接受這一點。 – dynamic 2012-02-02 22:12:15

+0

@ yes123:缺點是解析和應用選擇器時,真的不需要那麼大的錘子。但是,除非你在這個數千次的緊密循環中進行,否則這並不重要。 :-) – 2012-02-02 22:16:24

相關問題