0

jQuery 的.clone()工作方式似乎是,一旦在某处插入克隆的对象,如果不重新克隆原始对象,就无法再次插入它。例如,如果您这样做:

var cloned = $('#elem1').clone();
$('#elem2').after(cloned);
$('#elem2').after(cloned);

只有一个副本elem1会被复制,而第二个after调用什么也不做。

有没有办法在使用克隆对象后不“清除剪贴板”?现在我正在通过在将其插入某处之前再次克隆对象来完成。有一个更好的方法吗?

4

1 回答 1

3

您的两行只是将相同的 jQuery 元素集移动两次。如果您想要一个新副本,是的,您必须再次克隆它。after()不克隆任何东西。它只是移动内容。clone()在这种情况下是创建内容的原因。

var cloned = $('#elem1').clone();
$('#elem2').after(cloned);
cloned = $('#elem1').clone();
$('#elem2').after(cloned);

此外,您应该在执行此操作时更改或删除 ID 属性:

var cloned = $('#elem1').clone().removeAttr("id");
$('#elem2').after(cloned);
cloned = $('#elem1').clone().removeAttr("id");
$('#elem2').after(cloned);

由于技术上不允许重复 ID,因此行为未定义。

于 2010-02-15T05:30:08.943 回答