如何在克隆表行后使用jQuery动态更新ID?

时间:2012-09-10 22:56:31

标签: javascript jquery

触发时,克隆表格的第3行(下)行。在CSS中,此行(#tr3)设置为:display:none;这是我克隆的表格行:

<tr name="tr3" id="tr3">
    <td><input type="text" name="dt1" id="dt1"></td>
    <td><input type="text" name="fn1" id="fn1"></td>
    <td><a href="#" name="change1" id="change1">change</a></td>
    <td><a href="#" name="del1" id="del1">delete</a></td>
</tr>

这是克隆行的JQuery代码。可悲的是,不是我的,所以我不明白所有这一切。

$("table tr:nth-child(4)").clone().find("input").each(function() {
    $(this).val('').attr('id', function(_, id) {
    return id + count;
});

具体来说,第2行的功能如何工作 - 什么是下划线?

但这是我的目的。我怎么能:

  1. 更改要显示的样式:克隆行的块,
  2. 更新克隆行中锚标记的ID。输入字段的ID更新(例如fn1 =&gt; fn11,fn12,fn13,fn14等)。
  3. 谢谢。

2 个答案:

答案 0 :(得分:2)

为了清楚起见:

var $clone = $("table tr:nth-child(4)").clone();
  1. 如何将样式更改为克隆行的display:block

    $clone.show();
    
  2. 如何更新克隆行中锚标记的ID。

    $clone.find("a, input").each(function() {
      $(this).val('').attr('id', function(_, id) {
        return id + count;
      });
    });
    
  3. 在上面的jQuery代码中,第2行中的函数如何工作 - 什么是下划线?

    下划线(_)是有效的ECMAScript's identifier name,它仅用作占位符,以便能够获取第二个参数(id。)

  4. 一切都完全(未经测试。)

    $("table tr:nth-child(4)")
      .clone()
      .show()
      .find("a, input").each(function() {
        $(this).val('').attr('id', function(_, id) {
          return id + count;
        });
      });
    

答案 1 :(得分:1)

  1. 您永远不会实际访问克隆的行。你必须将它分配给某些东西,例如

    $clonedRow = $("table ...").clone();
    

    然后你可以运行所有其他方法,最后将$clonedRow附加到DOM,可能还有

    $clonedRow.insertAfter("table ...")
    
  2. 您需要以某种方式剥离最后一个数字,可能使用正则表达式:

    return id.replace(/\d+$/, '') + count;
    
  3. _只是一个占位符。它没有被使用,所以代码的编写者选择了一个非描述性的变量名,因为声明中需要一些东西来获取id参数。