jquery .clone()与id和name属性

时间:2011-05-01 23:21:40

标签: jquery

我已经阅读了这个领域的一些问题和答案,但他们似乎都没有找到问题所在的肉(或土豆)。

如果你将.clone()指向一个带有id和/或名字的元素,带有id和/或名字的孩子,你会得到什么?没有ID或名字的项目?通过复制ID违反dom规则的项目?

4 个答案:

答案 0 :(得分:1)

单独调用.clone()并不违反任何DOM的规则(.clone()只是一个函数调用,结果存在于内存中)。

但是,将.clone()调用的结果插入到DOM中会导致文档中存在两个具有相同id的元素(正如您指出的那样无效)。

答案 1 :(得分:1)

其他答案总结得很好,但这是一种删除新克隆中id属性的方法......

clone.find('[id]').removeAttr('id');

或者,如果您想在其id属性中添加字符串......

clone.find('[id]').attr('id', function(index, oldId) { return oldId + 'cloned'; });

答案 2 :(得分:0)

克隆的元素尚未插入到DOM中。它们只存在于记忆中,因此它们不会违反任何规范。这是我的理解。

答案 3 :(得分:0)

多个元素可以具有相同的name,因此这不是问题。

在元素上调用clone本身并不违反唯一ID的DOM规则。这是因为元素的克隆当前不在 文档中。只有在插入规则时才会破坏规则。