2011-07-26 17 views
12
$("#tableid tbody:last").append(html); 

Esto crea las filas de la tabla dinámicamente. Cada fila recién creada tiene un botón "eliminar".jQuery basic: ¿Cómo puedo eliminar una fila de la tabla cuando se hace clic en un botón de esta fila?

Ahora, si hago clic en ese botón, se eliminará esa fila. ¿Cómo puedo hacer esto?

Gracias de antemano.

+0

He aquí un artículo detallado sobre cómo eliminar fila de la tabla http://codepedia.info/remove-table-row-tr-in-jquery/ –

Respuesta

33
$(buttonSelector).live ('click', function() 
{ 
    $(this).closest ('tr').remove(); 
} 
); 

usando .live para vincular a su evento se unirá de forma automática cuando se añade dinámicamente su fila.

Editar

live ahora es obsoleto, desde la versión 1.7 que pienso.

El camino a seguir ahora es usar on en lugar de live.

$('#tableid').on('click', buttonSelector, function(){ 
    $(this).closest ('tr').remove(); 
}); 

Ver el doc.

+0

acerca del más cercano: http: //api.jquery.com/closest/ – Johnny5

+1

+1, esta es una forma más limpia ... –

+3

Guau, aprendo algo nuevo todos los días. No sabía que había una función más cercana. Buen post. –

2

Puede utilizar este código para eliminar la fila principal que contiene el botón de clic:

$(myButtonSelector).click(function(){ 
    $(this).parents('tr').first().remove(); 
}); 

Para un ejemplo vivo ver this link.

Para obtener más información, vea this article.

+0

Si el botón está en '' esto elimina la celda, no la fila. – Johnny5

+0

botón es creado de esta manera: \t \t \t \t \t '' + '' + '', yo probamos este, => $ ('input.class_button_remove td') haga clic en (function() { \t \t \t \t \t $ (this) .parent() remove();.. \t \t \t \t }); , esto no funcionó, – prime

+0

El botón está en , entonces ¿cómo puedo eliminar la fila, no la td? – prime

1

Se podría hacer algo como:

$('.add').click(function(){ 
$("#tableid tbody:last").append('<tr><td>Hi</td><td><a class="remove">Remove</a>'); 
}); 

$('.remove').live('click',function(){console.log($(this).parent().parent().remove())}); 
Cuestiones relacionadas