2010-08-26 23 views
5

Estoy tratando de agregar una fila a una tabla. Descubrí que podemos usar el método clone() para duplicar una fila existente. Mi tabla tiene dos entradas de texto en dos elementos <tr> diferentes. ¿Clonar la última fila también está duplicando los valores en mis entradas de texto, que no quiero? ¿Cómo puedo clonar la fila sin duplicar los valores?¿Cómo puedo clonar una fila en una tabla sin clonar los valores de los elementos de entrada dentro de ella?

Esto es lo que tengo hasta ahora:

$("#table-1 tr:last").clone(); 
+0

duplicado [copia de la fila con valor único] (http://stackoverflow.com/questions/3503279/using-append-to-copy-table-row-would-like-to-create-unique-ids/6455421# 6455421) –

Respuesta

24

Prueba esto:

var clone = $("#table-1 tr:last").clone().find('input').val('').end(); 
  • .clone() los últimos <tr>
  • .find() los <input> elementos en el clon
  • establecer el .val() de los elementos <input> a '',
  • llame al .end() para que el <tr> clonado se almacene en la variable en lugar de los elementos <input>.

Si tiene la intención de agregarlo inmediatamente a la tabla, agregue .insertAfter("#table-1 tr:last") al final.

var clone = $("#table-1 tr:last").clone().find('input').val('').end().insertAfter("#table-1 tr:last"); 
+0

:(esto es exactamente lo que respondí aquí: http://stackoverflow.com/questions/3576948/add-row-to-a-table-with-jquery-but-dont-need-its-value/3577015 # 3577015 –

+0

@Yanick - Esa pregunta era un duplicado de esta pregunta. Esta pregunta (y respuesta) fue primero, y por eso la otra estaba cerrada. – user113716

1

Puede añadir esta línea después de la línea dada para establecer los valores de los campos de entrada en blanco:

$('#table-1 tr:last input').attr('value',''); 

o simplemente:

$('#table-1 tr:last input').val(''); 
1

El dado anteriormente respuesta es perfecto pero una cosa es que faltan las filas creadas que no tienen los eventos que son adquiridos por filas creadas previamente. entonces, para clonar filas idénticas con eventos, tenemos que establecer la propiedad verdadera.

ver aquí ......

var newRow = $("#table-of-items  tr:last").clone(true).find(':input').val('').end(); 

    $("#table-of-items").append(newRow); 

Nota tabla-de-elementos es el nombre de la tabla.

Cuestiones relacionadas