我有一个包含多个表格输入单元格的行的表格(请参阅下面的HTML代码段)。我有一个删除和单个行的函数,我试图通过遍历每一行(以获取新的行索引)重新索引所有剩余的那些,并在其中迭代每个输入($('td input', $row).each( ... )
)并更新name
和id
属性。我发现的是第一个单元格中的输入重新编制索引,而不是第二个单元格中的成本输入。
知道我错过了什么让第二个细胞不能更新?
感谢。
HTML代码段:
<tbody>
<tr>
<td>
<input type="hidden" name="data[Ticket][0][id]" value="" id="Ticket0Id">
<input type="hidden" name="data[Ticket][0][date_id]" value="" id="Ticket0DateId">
<input name="data[Ticket][0][name]" type="text" maxlength="45" value="" id="Ticket0Name">
</td>
<td>
<input name="data[Ticket][0][cost]" type="text" value="" id="Ticket0Cost">
</td>
</tr>
<tr>
<td>
<input type="hidden" name="data[Ticket][1][id]" value="" id="Ticket1Id">
<input type="hidden" name="data[Ticket][1][date_id]" value="" id="Ticket1DateId">
<input name="data[Ticket][1][name]" type="text" maxlength="45" value="" id="Ticket1Name">
</td>
<td>
<input name="data[Ticket][1][cost]" type="text" value="" id="Ticket1Cost">
</td>
</tr>
</tbody>
根据大众需求,这里是尝试进行重建索引的jQuery代码段:
// $tbody references the <tbody> element in the snippet above
$('tr', $tbody).each( function( i, row ) {
var $row = $(row);
$('td input', $row).each( function( j, input ) {
$(input).attr( 'id', $(this).attr( 'id' ).replace( /\d+/g, i ) )
$(input).attr( 'name', $(this).attr( 'name' ).replace( /\d+/g, i ) );
})
});
答案 0 :(得分:0)
将其用作选择器:
$tr.find('input').each(function(j, input) { });
答案 1 :(得分:0)
看起来我可能过于依赖Safari的网络检查员来确定属性是否正在重新编制索引。看起来如果你有一个扩展的元素,那么当它们发生时,不会反映对该元素的更改。下一次,我将首先使用jsfiddle(或至少第二次)进行验证。经验教训。
这个是关于我的。对不起,大家。