将带有jquery的行添加到表中,并使用元素填充最后一个tr

时间:2015-12-22 16:10:17

标签: jquery

我有一张这样的表

HTML

<table id='tab_imput'>
    <tr>
        <td>
            <select id='eotp'>    
                <option>...</option>
            </select>
        </td>
        <td>
            <input id='cc'>
        </td>
        <td>
            <select id='dest'>    
                <option>...</option>
            </select>
        </td>
        <td>
            <input id='quot'>
        </td>
    </tr>
</table>

我希望通过循环(imput)向表中添加行,并使用数据填充每个元素,它看起来对第一行很好但不适用于下一行,任何帮助都会非常感谢。谢谢

这是我的代码:

$.each(imput, function( index, value ) {
    eotp = $('#tab_imput tbody>tr:last').find($("select[id^='eotp']"));
    eotp.attr('value',imput[index].EOTP).attr('selected', 'selected');
    dest = $('#tab_imput tbody>tr:last').find($("select[id^='dest']"));
    dest.attr('value',imput[index].DESTINATION).attr('selected', 'selected');
    tr = eotp.closest("tr");
    $.post("ajax/ajax_imputation.php", {eotp_val: imput[index].EOTP}, function(response){
        tr.find("#cc").val(response);
    });
    $.post("ajax/ajax_imputation.php", {dest: 'ok', id_dest:imput[index].DESTINATION}, function(response){
        tr.find("#quot").val(imput[index].QUOTITE);
    });
    if(index > 1){
        $('#tab_imput tbody>tr:last').clone(true).insertAfter('#tab_imput tbody>tr:last');
    }
});

1 个答案:

答案 0 :(得分:0)

据我了解,您的算法看起来像这样:

  1. 从表中获取最后一行;
  2. 填写所有必要的数据;
  3. 复制最后一行以将其用于下一次迭代(假设它不是第一次迭代)。
  4. 请注意,元素在$ .each函数中从0开始而不是从1开始编制索引。你的流程如下:

    1. 迭代1(索引0) - 填充第一行;
    2. 迭代2(索引1) - 再次填充第一行;
    3. 迭代3(索引2) - 再次填充同一行,添加新行以供以后使用;
    4. 迭代4(索引3)等等 - 最后它开始按预期工作。
    5. 它不是错误的来源吗?如果是这样,也许最好在填充数据之前克隆行,除了第一个迭代之外的每次迭代。