jQuery eliminare tutte le righe della tabella ad eccezione di prima
-
21-08-2019 - |
Domanda
Utilizzando jQuery, come faccio a cancellare tutte le righe in una tabella, ad eccezione del primo?Questo è il mio primo tentativo con l'indice selettori.Se ho ben capito gli esempi correttamente, il seguente dovrebbe funzionare:
$(some table selector).remove("tr:gt(0)");
che vorrei leggere come "Involucro di un tavolo in un oggetto jQuery, quindi rimuovere tutti i 'tr' elementi (righe) in cui l'elemento di indice di queste righe è maggiore di zero".In realtà, si esegue senza generare un errore, ma non rimuovere tutte le righe dalla tabella.
Quello che mi manca, e come faccio a risolvere questo problema?Naturalmente, ho potuto utilizzare direttamente il javascript, ma mi sto divertendo così tanto con jQuery che mi piacerebbe risolvere questo utilizzando jQuery.
Soluzione
Questo dovrebbe funzionare:
$(document).ready(function() {
$("someTableSelector").find("tr:gt(0)").remove();
});
Altri suggerimenti
Credo che questo sia più leggibile dato l'intento:
$('someTableSelector').children( 'tr:not(:first)' ).remove();
Utilizzando i bambini si occupa anche del caso in cui la prima riga contiene una tabella limitando la profondità della ricerca.
Se si ha un elemento TBODY, si può fare questo:
$("someTableSelector > tbody:last").children().remove();
Se avete THEAD o elementi TFOOT avrete bisogno di fare qualcosa di diverso.
Un altro modo per ottenere questo risultato è utilizzando la funzione vuota () di jQuery con gli elementi thead e tbody della tabella.
Esempio di tabella:
<table id="tableId">
<thead>
<tr><th>Col1</th><th>Col2</th></tr>
</thead>
<tbody>
<tr><td>some</td><td>content</td></tr>
<tr><td>to be</td><td>removed</td></tr>
</tbody>
</table>
E il comando jQuery:
$("#tableId > tbody").empty();
Questo eliminerà ogni file contenuti nella elemento tbody della tabella e mantenere l'elemento thead in cui l'intestazione dovrebbe essere. Può essere utile quando si desidera aggiornare solo il contenuto di una tabella.
Se si trattasse di me, probabilmente sarei bollire fino a un unico selettore:
$('someTableSelector tr:not(:first)').remove();
Il selettore non ha bisogno di essere all'interno del vostro rimuovere.
Dovrebbe essere qualcosa di simile:
$("#tableID tr:gt(0)").remove();
Il che significa selezionare ogni riga, tranne la prima in classifica con ID di IDtabella e rimuoverli dal DOM.
Si consideri una tabella con id tbl
: il codice jQuery sarebbe:
$('#tbl tr:not(:first)').remove();
$('#table tr').slice(1).remove();
Mi ricordo che imbattersi in 'fetta' è più veloce di tutti gli altri approcci, quindi basta metterlo qui.
Per rimuovere tutte le righe, tranne la prima (tranne intestazione), utilizzare il codice qui sotto:
$("#dataTable tr:gt(1)").remove();
Scusi questo è molto ritardo di risposta.
Il modo più semplice che ho trovato per eliminare qualsiasi riga (e tutte le altre righe attraverso iterazione) è presente
$ ( '# rowid', '# IDtabella') rimuovere ();.
Il resto è facile.
$("#p-items").find( 'tr.row-items' ).remove();
avvolto in una funzione:
function remove_rows(tablename) {
$(tablename).find("tr:gt(0)").remove();
}
poi chiamarlo:
remove_rows('#table1');
remove_rows('#table2');
Questo funziona perfettamente
$("#myTable tbody").children( 'tr:not(:first)' ).html("");
Questo ha funzionato nel modo seguente nel mio caso e lavorando bene
$("#compositeTable").find("tr:gt(1)").remove();
Modo più semplice :
$("#mytable").find($("tr")).slice(1).remove()
-primo riferimento la tabella
-ottenere l'elenco di elementi e tagliate a fette e rimuovere gli elementi selezionati della lista