jQuery selecciona todo excepto primero

En jQuery, ¿cómo utilizo un selector para acceder a todos menos al primero de un elemento? Por lo tanto, en el siguiente código solo se accederá al segundo y tercer elemento. Sé que puedo acceder a ellos manualmente, pero podría haber cualquier cantidad de elementos, por lo que no es posible. Gracias.

 $("div.test:not(:first)").hide(); 

o:

 $("div.test:not(:eq(0))").hide(); 

o:

 $("div.test").not(":eq(0)").hide(); 

o:

 $("div.test:gt(0)").hide(); 

o: (según el comentario de @Jordan Lev):

 $("div.test").slice(1).hide(); 

y así.

Ver:

Debido a la forma en que los selectores de jQuery se evalúan de derecha a izquierda , la bastante legible li:not(:first) se ralentiza con esa evaluación.

Una solución igualmente rápida y fácil de leer utiliza la versión de función .not(":first") :

p.ej

 $("li").not(":first").hide(); 

JSPerf: http://jsperf.com/fastest-way-to-select-all-expect-the-first-one/6

Esto es solo unos pocos puntos porcentuales más lento que el slice(1) , pero es muy legible como “Quiero todos, excepto el primero”.

Mi respuesta está enfocada a un caso extendido derivado del expuesto en la parte superior. Caso extendido:

Supongamos que tiene un grupo de elementos del cual desea ocultar los elementos secundarios excepto primero. Como ejemplo:

  
visible#1
xx
yy
visible#2
aa
bb
  1. Queremos ocultar todos los elementos “.child” en cada grupo. Esto no ayudará porque ocultará todos los elementos “.child” excepto “visible # 1”:

$('.child:not(:first)').hide();

  1. la solución (en este caso extendido) será:

$('.some-group').each(function(i,group){ $(group).find('.child:not(:first)').hide(); });

 $(document).ready(function(){ $(".btn1").click(function(){ $("div.test:not(:first)").hide(); }); $(".btn2").click(function(){ $("div.test").show(); $("div.test:not(:first):not(:last)").hide(); }); $(".btn3").click(function(){ $("div.test").hide(); $("div.test:not(:first):not(:last)").show(); }); }); 
     
First
Second
Third
Last