0

触发时,表的第三(底部)行被克隆。在 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. 将样式更改为 display:block 用于克隆行,以及
  2. 更新克隆行中锚标记的 ID。输入字段的 ID 会更新(例如 fn1 => fn11、fn12、fn13、fn14 等)。

谢谢你。

4

2 回答 2

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 标识符名称,它仅用作占位符,以便能够获取第二个参数 ( id.)

和所有的东西(未经测试。)

$("table tr:nth-child(4)")
  .clone()
  .show()
  .find("a, input").each(function() {
    $(this).val('').attr('id', function(_, id) {
      return id + count;
    });
  });
于 2012-09-10T23:11:58.267 回答
1
  1. 您永远不会真正自己访问克隆的行。您必须将其分配给某些东西,例如

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

    然后您可以运行所有其他方法并最终附加$clonedRow到 DOM,可能使用

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

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

于 2012-09-10T23:06:03.933 回答