2011-08-28 17 views
14

Attualmente ho una tabella che può essere N colonne e N righe. Nell'interfaccia ho un pulsante per rimuovere l'ultima colonna, ma non riesco a capire come rimuovere l'ultimo td da tutte le righe, quello che ho ottenuto finora è quello di rimuovere la prima riga td e l'ultima riga td ma lascia gli altri là.jQuery remove last table column

Ecco il mio codice (elimina solo l'ultimo titolo attualmente):

function removeTableColumn() { 
    /* 
     removeTableColumn() - Deletes the last column (all the last TDs). 
    */ 
    $('#tableID thead tr th:last').remove(); // Deletes the last title 
    $('#tableID tbody tr').each(function() { 
     $(this).remove('td:last'); // Should delete the last td for each row, but it doesn't work 
    }); 
} 

mi sto perdendo qualcosa?

risposta

28

Questo perché il selettore :last corrisponde solo l'ultimo elemento nel set.

Si potrebbe essere alla ricerca di :last-child, che abbina gli elementi che sono l'ultimo figlio del genitore:

+0

Non conoscevo il selettore ': last-child', bello! –

6

:last restituisce l'ultimo elemento trovato dal selettore. Quindi #tableID tr td:last restituirebbe solo uno td.

È possibile selezionare l'ultimo td di ogni TR fare questo:

$('#tableID tr').find('th:last, td:last').remove(); 
+0

Funziona perfettamente, ma non capisco cosa fa il codice. Per ogni riga ottiene i figli td e th, ma cosa fa slice? –

0

È possibile rimuovere qualsiasi colonna da una tabella come questa

//remove the 1st column 
    $('#table').find('td,th').first().remove(); 

    //remove the 1st column 
    $('table tr').find('td:eq(1),th:eq(1)').remove(); 

    //remove the 2nd column 
    $('table tr').find('td:eq(1),th:eq(1)').remove(); 

    //remove the nth column 
    $('table tr').find('td:eq(n),th:eq(n)').remove(); 

per reference