2012-02-25 13 views
15

Tengo una tabla con muchas filas (+50) y celdas (+50). Ahora me gustaría eliminar el n primeras o últimas celdas con jQuery. Actualmente tengo el siguiente código:¿Cómo eliminar la 'n' cantidad de elementos primero o último con jQuery de una manera óptima?

var n = 10; 
var last = true; 
for (var i = 0; i < n; i++) { 
    table.find('tr').each(function() { 
     if(last)   
     $(this).find('td:last').remove(); 
     else 
     $(this).find('td:first').remove(); 
    }); 
} 

Nota: table es un elemento de jQuery.

El código funciona, pero realiza muy lento cuando tengo una tabla con 50 filas con 50 celdas y elimino las 10 últimas celdas. ¿Alguna idea de cómo optimizar el código?

Edité: También he añadido la primera cláusula.

Respuesta

25

Lo óptimo, creo que podría ser el uso de nth-last-child.

table.find("tr td:nth-last-child(-n+10)").remove();​ 

beneficio es que se utilizará motor interno de selección del navegador CSS (o en el caso de IE jQuery le ayudará un poco :) Aquí está el demo eliminación de los 3 últimos elementos. Cambie a 10 en su caso.

+0

uso muy inteligente del operador 'n-th-last-child', me gusta :) – ntziolis

+0

Esto funciona increíble! Me encanta ... es pequeño, elegante y funciona! –

-3

Alternativamente, podrías probar esto.

var n = 3; 
var len = table.find('tr').length; 
table.find('tr:gt(' + (len - n - 1) + ')').find('td:last').remove();​ 
-1

Puede utilizar el selector Greater Than. Selecciona todos los elementos en un índice mayor que el índice dentro del conjunto combinado. Primero calcule la cantidad de elementos (td). Reste 10 y luego use el mayor que el selector.

Cuestiones relacionadas