2012-02-25 12 views
15

Ho una tabella con molte righe (+50) e celle (+50). Ora desidero rimuovere la n prima o l'ultima cella con jQuery. Attualmente ho il seguente codice:Come rimuovere il numero "n" del primo o dell'ultimo elemento con jQuery in modo ottimale?

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 è un elemento jQuery.

Il codice funziona, ma esegue molto lento quando ho una tabella con 50 righe con 50 celle e rimuovo le ultime 10 celle. Qualche idea su come ottimizzare il codice?

Modifica: Ho aggiunto anche la prima clausola.

risposta

25

L'ottimale che penso potrebbe utilizzare nth-last-child.

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

vantaggio è che il motore di selezione del browser CSS interno verrà utilizzato (o in caso di IE jQuery aiuterà un po ':) Ecco l'demo rimuovendo gli ultimi 3 elementi. Cambialo a 10 nel tuo caso.

+0

Utilizzo molto intelligente dell'operatore 'n-esimo-ultimo-figlio', Mi piace :) – ntziolis

+0

Questo funziona incredibile! Lo adoro ... è piccolo, elegante e si esibisce! –

-3

In alternativa si potrebbe provare questo.

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

È possibile utilizzare il selettore Greater Than. Seleziona tutti gli elementi in un indice maggiore dell'indice all'interno del set abbinato. Prima calcolare il numero di elementi (td). Sottrarre 10 e quindi utilizzare il selettore maggiore di.

Problemi correlati