我已经阅读了这个领域的一些问题和答案,但他们似乎都没有找到问题所在的肉(或土豆)。
如果你将.clone()指向一个带有id和/或名字的元素,带有id和/或名字的孩子,你会得到什么?没有ID或名字的项目?通过复制ID违反dom规则的项目?
答案 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规则。这是因为元素的克隆当前不在 文档中。只有在插入规则时才会破坏规则。