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

Necesito ocultar todo este div pero no el primer div.Eliminar solo el primer elemento de una selección de jquery

que podía hacer algo como esto:

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

¿Hay una manera de quitar la primera .box de la matriz antes de .hide() em?

+0

Comparación del rendimiento de las respuestas presentadas: http: // jsperf. com/remove-only-the-first-element-from-a-jquery-selection – zch

Respuesta

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

+1, la mejor manera de hacerlo (y 'slice' es una función infrautilizada). –

+3

+1 para una solución simple. Atención: "¿Hay alguna manera de eliminar el ** primero ** ...", si quieres eliminar ** el primero ** tienes que usar '.slice (0)'. :-) –

+7

@John para eliminar el primer elemento de un conjunto jquery necesita usar slice (1) not slice (0), el método slice usa un índice basado en cero pero el nuevo slice se corta antes del índice. Por lo tanto, cortar (1) corta el conjunto _antes del elemento con el índice 1 (es decir, antes del 2 ° elemento) en efecto eliminando el primer elemento. slice (0) corta antes del primer elemento, por lo que solo devuelve todo el conjunto original. – metatron

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

http://jsfiddle.net/8wMFc/

+0

Yo diría que * this * es la respuesta más limpia del grupo –

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

Dicho esto, yo prefiero la solución de envidia residual.

1

intento:

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

gt = mayor que? – dynamic

+0

@ yes123 sip .... –

6

tratar

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

comparación:

@TJCrowder es correcto el código que he sugerido hace el análisis extra que puede ser evitado por .slice como sugerido por @zch

HERE es el perfil de mi código (0,8 ms) y HERE es el perfil de código (0.53ms) @ de ZCH ver la diferencia

+0

estoy en duda si aceptar su respuesta o respuesta ZCH con una rodaja (1) – dynamic

+0

Bueno, yo creo que esto es el código más fácil de leer, voy a aceptar esto. – dynamic

+0

@ yes123: La desventaja es el análisis y la aplicación del selector cuando realmente no hay necesidad de ese gran martillo. Pero a menos que estés en un circuito muy cerrado haciendo esto miles de veces, no es que importe. :-) –

Cuestiones relacionadas