2012-07-05 15 views
11

Ho visto molte domande su come selezionare tutto tranne la prima e l'ultima riga di una tabella, ma voglio sapere come selezionare tutto tranne le prime DUE righe e l'ultima. In questo momento ho questo per selezionare tutti, ma i primi due:Come rimuovere tutte le righe da una tabella tranne le prime due e l'ultima?

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

e ho bisogno di qualche modo per ottenere l'ultimo pure. Forse un modo per combinare con

:not(:last) 

?

Sono abbastanza nuovo per jQuery e qualsiasi aiuto sarebbe apprezzato.

risposta

12

Basta unire i selettori:

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

JSFiddle

+0

È per questo che sto iniziando ad amare jquery: la risposta è spesso così facile e intuitivo. Grazie, ha funzionato perfettamente! – cnhe

+0

Nessun problema. E puoi quasi sempre leggere questi selettori come una frase: "trova tutti i' tr' che sono dopo il secondo (1 + 1, dal suo zero) figlio che non è l'ultimo figlio del suo genitore. " –

20

Questo è quello che vi serve:

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

DEMO

jsperf di soluzioni miei e @Evan 's.

enter image description here

+0

Grazie, anche questo funziona. – cnhe

+0

@cnhe di 'slice' è circa 5 volte più veloce, rispetto a '' tr: gt (1): non (: last) '' selector. Probabilmente, per te l'uso di' slice' potrebbe essere più conveniente, che usare il selettore . – Engineer

Problemi correlati