表格行的后代

时间:2011-09-14 13:32:02

标签: jquery

我有一个包含多个表格输入单元格的行的表格(请参阅下面的HTML代码段)。我有一个删除和单个行的函数,我试图通过遍历每一行(以获取新的行索引)重新索引所有剩余的那些,并在其中迭代每个输入($('td input', $row).each( ... ))并更新nameid属性。我发现的是第一个单元格中的输入重新编制索引,而不是第二个单元格中的成本输入。

知道我错过了什么让第二个细胞不能更新?

感谢。

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 ) );
  })
});

2 个答案:

答案 0 :(得分:0)

将其用作选择器:

$tr.find('input').each(function(j, input) { });

答案 1 :(得分:0)

看起来我可能过于依赖Safari的网络检查员来确定属性是否正在重新编制索引。看起来如果你有一个扩展的元素,那么当它们发生时,不会反映对该元素的更改。下一次,我将首先使用jsfiddle(或至少第二次)进行验证。经验教训。

这个是关于我的。对不起,大家。