我有一张这样的 table
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>
我想通过循环(输入)向表中添加行,并用数据填充每个元素,它对于第一行看起来不错,但对于下一行不起作用,任何帮助将不胜感激。谢谢
这是我的代码:
$.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');
}
});
最佳答案
据我了解,您的算法如下所示:
- 获取表格的最后一行;
- 填写所有必要的数据;
- 复制最后一行以将其用于下一次迭代(前提是这不是第一次迭代)。
请记住,$.each 函数中的元素索引是从 0 开始的,而不是从 1 开始的。您的流程如下所示:
- 迭代 1(索引 0)- 填充第一行;
- 迭代 2(索引 1)- 再次填充第一行;
- 迭代3(索引2)-再次填充同一行,添加新行供以后使用;
- 迭代 4(索引 3)等等 - 最后它开始按预期工作。
这不是错误的根源吗?如果是这样,也许最好先克隆该行,然后再为除第一次迭代之外的每次迭代填充数据。
关于jquery - 使用 jquery 将行添加到表中,并使用元素填充最后一个 tr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34419972/