我不知道为什么我的克隆元素的 id 没有改变。这是我正在处理的代码。
c.children('#response1').attr('id','response'+ (++inputs) );
您需要使用 find() 而不是 children()。Children 仅适用于直接子代,而不适用于子代的子代。
您尝试选择的输入元素不是行标签的直接子元素。该children()
函数仅选择直接子级。您可以使用该find()
函数来获取非直系后代。
您可以查看这个更新的小提琴,当您单击输入文本框时会显示 id:
顺便说一句,您的代码中还有另一个错误。如果您添加 3 行(或更多),然后删除不是最后一行的行,然后再添加另一行,您将获得重复的 ID。原因是inputs
当你删除一行时你会递减计数器,即使它不是最后一行。例如:
添加两行。
response1
response2
response3
现在删除第二行。
response1
response3
添加另一行
response1
response3
response3 (this is the new one. duplicate id)
解决方案是要么不递减inputs
(除非它是最后一行,但这是可选的)。如果您确实需要有顺序编号的项目,那么只要从除末尾之外的任何位置删除输入,您就必须简单地重新编号。