2011-08-28 80 views
14

Actualmente tengo una tabla que puede ser N columnas y N filas. En la interfaz tengo un botón para eliminar la última columna, pero no puedo encontrar la manera de eliminar la última td de todas las filas, lo que he logrado hasta ahora es eliminar la primera fila td y la última fila td , pero deja a los otros allí.jQuery eliminar la última columna de la tabla

Aquí está mi código (sólo borra el último título en la actualidad):

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 
    }); 
} 

Me estoy perdiendo algo?

Respuesta

28

Eso es porque el selector :last sólo coincide con el último elemento del conjunto.

Usted podría estar buscando :last-child, que coincide con los elementos que son el último hijo de su padre:

+0

No sabía nada sobre el selector ': last-child', ¡lindo! –

6

:last devuelve el último elemento encontrado por el selector. Entonces, #tableID tr td:last devolvería solo un td.

Usted puede seleccionar el último de cada td tr estar haciendo esto:

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

Funciona perfectamente, pero no entiendo lo que hace el código. Para cada fila, obtiene los hijos td y th, pero ¿qué hace slice? –

0

Puede eliminar cualquier columna de una tabla como la siguiente

//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(); 

para reference

Cuestiones relacionadas