Optimize clone rows of an html table

0

I have a contact table in which I upload the data via jquery, this works well but I do not like the code I find it not very good, I would like to help me improve it I leave my code

Functional

            var fila_clon = $('#tbl-contactos-edita-proveedor tbody tr:first').clone();
            $('#tbl-contactos-edita-proveedor tbody tr').remove();
            $('#tbl-contactos-edita-proveedor tbody').append(fila_clon);
            $.each(retorna.contactos,function(indice, valor){
                var fila_clon = $('#tbl-contactos-edita-proveedor tbody tr:first').clone();
                fila_clon.find('.edita-nombre-contacto').each(function(){
                    $(this).val(valor.Con_Nombre).addClass('exlude');
                });
                fila_clon.find('.edita-fono-contacto').each(function(){
                    $(this).val(valor.Con_Fono).addClass('exlude');
                });
                fila_clon.find('.edita-correo-contacto').each(function(){
                    $(this).val(valor.Con_Correo).addClass('exlude');
                });
                $('#tbl-contactos-edita-proveedor tbody').append(fila_clon);
            });
            $('#tbl-contactos-edita-proveedor tbody tr:first').remove();

As I think it should be but it does not work just insert the last row of the shekel each

        var fila_clon = $('#tbl-contactos-edita-proveedor tbody tr:first').clone();
        $('#tbl-contactos-edita-proveedor tbody tr').remove();
        $.each(retorna.contactos,function(indice, valor){
            fila_clon.find('.edita-nombre-contacto').each(function(){
                $(this).val(valor.Con_Nombre).addClass('exlude');
            });
            fila_clon.find('.edita-fono-contacto').each(function(){
                $(this).val(valor.Con_Fono).addClass('exlude');
            });
            fila_clon.find('.edita-correo-contacto').each(function(){
                $(this).val(valor.Con_Correo).addClass('exlude');
            });
            $('#tbl-contactos-edita-proveedor tbody').append(fila_clon);
        });
    
asked by Kevin 04.09.2018 в 14:18
source

3 answers

0

Just call row_clon.clone () when passing it to append:

$('#tbl-contactos-edita-proveedor tbody').append(fila_clon.clone()); 
    
answered by 04.09.2018 / 17:53
source
0

You must pass the row to it as a parameter of your function, so that the row is updated, when you call the function. But you are always passing the same as you started in the variable at the beginning.

$.each(retorna.contactos,function(indice, valor,fila_clon){
        fila_clon.find('.edita-nombre-contacto').each(function(){
            $(this).val(valor.Con_Nombre).addClass('exlude');
        });
        fila_clon.find('.edita-fono-contacto').each(function(){
            $(this).val(valor.Con_Fono).addClass('exlude');
        });
        fila_clon.find('.edita-correo-contacto').each(function(){
            $(this).val(valor.Con_Correo).addClass('exlude');
        });
        $('#tbl-contactos-edita-proveedor tbody').append(fila_clon);
    });
    
answered by 04.09.2018 в 14:55
0

According to Javi Mollá's comment, the solution was to add clone() by passing the variable to append() with $('#tbl-contactos-edita-proveedor tbody').append(fila_clon.clone());

            var fila_clon = $('#tbl-contactos-edita-proveedor tbody tr:first').clone();
            $('#tbl-contactos-edita-proveedor tbody tr').remove();
            if(retorna.contactos.length == 0){//en caso de no traer registros
                $('#tbl-contactos-edita-proveedor tbody').append(fila_clon);
            }
            $.each(retorna.contactos,function(indice, valor){
                fila_clon.find('.edita-nombre-contacto').each(function(){
                    $(this).val(valor.Con_Nombre).addClass('exlude');
                });
                fila_clon.find('.edita-fono-contacto').each(function(){
                    $(this).val(valor.Con_Fono).addClass('exlude');
                });
                fila_clon.find('.edita-correo-contacto').each(function(){
                    $(this).val(valor.Con_Correo).addClass('exlude');
                });
                $('#tbl-contactos-edita-proveedor tbody').append(fila_clon.clone());
            });
    
answered by 04.09.2018 в 15:52