2010-08-17 16 views
33

Cómo copiar la fila de la tabla con el clon en jquery y crear nuevos identificadores únicos para los controles. El clon copiará los datos también. No quiero datos que se copiaránCómo copiar la fila de la tabla con el clon en jquery y crear nuevos identificadores únicos para los controles

La fila de la tabla contiene la siguiente información:

<tr> 
    <td><input type="text" id="txtTitle" name="txtTitle"></td> 
    <td><input type="text" id="txtLink" name="txtLink"></td> 
</tr> 

i necesidad de crear identificadores únicos para todas las nuevas filas, como txtTitle1, Link1, Title2, Link2 etc

+0

¿Puedes mostrar un ejemplo de marcado? –

+0

¿Se puede clonar la fila y luego cambiar los datos? – cam

+0

Código de muestra agregado –

Respuesta

80

Se podría hacer algo como esto :

var i = 1; 
$("button").click(function() ​​​{ 
    $("table tr:first").clone().find("input").each(function() { 
    $(this).val('').attr('id', function(_, id) { return id + i }); 
    }).end().appendTo("table"); 
    i++; 
})​;​ 

Esto vaciar los valores para las nuevas filas y darles identificadores únicos a partir de txtTitle1, txtTile2, etc.

You ca give it a try here. Si necesita cambiar el name también me gustaría pasar un objeto a .attr() para mantenerla un poco más limpia, así:

var i = 1; 
$("button").click(function() { 
    $("table tr:first").clone().find("input").each(function() { 
    $(this).attr({ 
     'id': function(_, id) { return id + i }, 
     'name': function(_, name) { return name + i }, 
     'value': ''    
    }); 
    }).end().appendTo("table"); 
    i++; 
});​ 

You can try that version out here.

+17

Este es un hermoso JavaScript que casi me conmovió hasta las lágrimas. Además, no tenía idea de que pudiera usar 'function (_, id)' dentro de una asignación de atributos como esa. Gracias un millón de veces más. La función – Portman

+0

(_, id) es gloria. Gracias por eso – MZAweb

+0

¿Qué pasa con los eventos relacionados con, por ejemplo, los clics onclicks? – Maxrunner

Cuestiones relacionadas