2012-02-02 2 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(); 

Есть ли способ, чтобы удалить первый .box из массива перед .hide() эм?

+0

сравнение производительности представленных ответов: HTTP: // JSPerf. com/remove-only-the-first-element-from-a-jquery-selection – zch

ответ

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

+1, лучший способ пойти (и 'slice' - недоиспользуемая функция). –

+3

+1 для простого решения. Внимание: «Есть ли способ удалить ** первый ** ...», если вы хотите удалить ** первый **, вы должны использовать '.slice (0)'. :-) –

+7

@John, чтобы удалить первый элемент из набора jquery, вам нужно использовать срез (1), а не срез (0), метод slice использует индекс на основе нуля, но новый срез нарезается _before_ индексом. Таким образом, срез (1) срезает набор _ перед_ элементом с индексом 1 (т.е. до 2-го элемента), фактически удаляя первый элемент. срез (0) разрезается перед первым элементом, поэтому он просто возвращает весь исходный набор. – metatron

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

Тем не менее, я предпочитаю решение Остаточные Зависть в.

1

попробовать:

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

gt = больше? – dynamic

+0

@ yes123 yep .... –

6

попробовать

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

сравнения:

@TJCrowder прав код я предложил делает дополнительный синтаксический анализ, который можно избежать, .slice, как предложенный @zch

HERE является профиль моего кода (0.8ms) и HERE является профиль @ ПНУ код с (0.53ms) увидеть разницу

+0

Я сомневаюсь, если принимаю ваш ответ или ответ zch с помощью ломтика (1) – dynamic

+0

Ну, я считаю, что это самый читаемый код, я согласен с этим. – dynamic

+0

@ yes123: The downside анализирует и применяет селектор, когда на самом деле нет необходимости в этом большом молотом. Но, если вы не будете в такой уж трудной петле, что делаете это тысячи раз, это не так важно. :-) –

Смежные вопросы