0

我不知道为什么我的克隆元素的 id 没有改变。这是我正在处理的代码。

 c.children('#response1').attr('id','response'+ (++inputs) );

JSFidde

4

2 回答 2

6

您需要使用 find() 而不是 children()。Children 仅适用于直接子代,而不适用于子代的子代。

于 2013-08-15T19:58:42.540 回答
1

您尝试选择的输入元素不是行标签的直接子元素。该children()函数仅选择直接子级。您可以使用该find()函数来获取非直系后代。

您可以查看这个更新的小提琴,当您单击输入文本框时会显示 id:

http://jsfiddle.net/9UZcV/3/

顺便说一句,您的代码中还有另一个错误。如果您添加 3 行(或更多),然后删除不是最后一行的行,然后再添加另一行,您将获得重复的 ID。原因是inputs当你删除一行时你会递减计数器,即使它不是最后一行。例如:

添加两行。

response1
response2 
response3

现在删除第二行。

response1
response3

添加另一行

response1
response3
response3  (this is the new one. duplicate id)

解决方案是要么不递减inputs(除非它是最后一行,但这是可选的)。如果您确实需要有顺序编号的项目,那么只要从除末尾之外的任何位置删除输入,您就必须简单地重新编号。

于 2013-08-15T20:07:24.327 回答