2012-07-05 28 views
11

He visto muchas preguntas sobre cómo seleccionar todas las filas menos la primera y la última de una tabla, pero quiero saber cómo seleccionar todo, excepto las primeras DOS filas y la última. Ahora mismo tengo esta opción para seleccionar todos menos los dos primeros:¿Cómo eliminar todas las filas de una tabla excepto las dos primeras y la última?

$("#sometable").find("tr:gt(1)").remove(); 

y necesito alguna manera de conseguir el último también. Tal vez alguna forma de combinar con

:not(:last) 

?

Soy bastante nuevo en jQuery y cualquier ayuda sería apreciada.

Respuesta

12

Sólo se combinan los selectores:

$("#sometable").find("tr:gt(1):not(:last)").remove(); 

JSFiddle

+0

Esto es por lo que estoy empezando a amar jQuery: la respuesta es a menudo tan fácil e intuitivo. Gracias, funcionó a la perfección! – cnhe

+0

No hay problema. Y casi siempre puedes leer estos selectores como una frase: "encuentra todos los' tr' que están después del segundo (1 + 1, ya que es basado en cero) el hijo que no es el último hijo de su padre ". –

20

Esto es lo que necesita:

$("#sometable").find('tr').slice(2,-1).remove() 

DEMO

jsperf de soluciones y mis @Evan 's.

enter image description here

+0

Gracias, esto también funciona. – cnhe

+0

@cnhe por 'slice' es aproximadamente 5 veces más rápido que con el selector' 'tr: gt (1): not (: last)' '. Así que, para ti, usar 'slice' podría ser más conveniente, que usar selector . – Engineer

Cuestiones relacionadas