1

这是一个演示表

<table id="table1">
<tr>
<td><label>name</label><input type="text" id= "name1"/></td>
<td><label>age</label><input type="text" id= "age1"/></td>
<td><input type="button" id= "addRow"style="background-image:url("images/addicon.png");"/></td>
</tr>

和 jquery 代码 m 尝试是

 $("#addRow").live("click", function (e, index) {
 var val = ("#table1 tr").length();
 val++;
    $('#table1  tbody > tr:last').after('<tr><td><label>name</label><input type="text" id= "name"'+val+'/></td><td><label>age</label><input type="text" id= "age"'+val+'/></td><td><input type="button" id= "addRow"style="background-image:url("images/addicon.png");"/></td><td><input type=button  id="deleteRow" style="background-image:url("images/removeicon.png");"></td>');
  });
  $("#deleteRow").live("click",function(e,index){
     $(this).parent().closest("tr").remove();
  });

现在问题来了,当有人添加一行 2 次并删除一行时,即 val 将是 name2,name3 假设 name2 被删除然后再次添加行号。行数为 2,因此 val++ 结果为 3,新行将 name3 作为 id,这对我来说是个问题。我真正想要的是,我应该保持行数 1 2 3 ... 像这样,不管删除什么行。任何人都可以帮我解决这个问题,我已经阅读了大量教程,但没有一个人保持统一的行数,这是你提出的这个问题。

4

1 回答 1

1

您可以使用输入名称,例如name[]在表单中有一个值数组。这比使用 , 等更容易name1name2如果您关心的是标签,您可以将输入包装在标签中并跳过for,如下所示:

<label>String: <input></label>

单击String:聚焦输入。

如果您想坚持现有的,只需val在外部存储一个范围.click并每次增加它。不要依赖长度。


顺便说一句,您还应该切换.live.on假设它可用。

于 2013-01-20T17:29:56.177 回答