首页 > 解决方案 > (jQuery) 不能多次附加同一个对象

问题描述

在附加这样的复制元素时,我可以理解 clone() 方法的目的:

$aObject = $('.className').clone();
$aObject.removeAttr('id');
$('#add-line').click(function() {
   $('#container').append( $aObject.clone());
});

但我不明白的是,如果我摆脱克隆方法,只需使用

$('#container').append( $aObject);

我应该仍然可以将多个相同的对象添加到容器中,但似乎我只能添加 aObject 一次?我们不能像一组相同的对象一样故意多次添加相同的对象吗?

标签: javascriptjquery

解决方案


在 JavaScript 中将对象分配给变量时,实际上并没有分配存储在内存中的对象值,而是指向对象在内存中的位置的引用。

因此,当您声明 $aObject 时,您现在已经存储了对特定对象的引用。当您附加它时,它的行为与您预期的一样,附加您正在引用的对象。当你再次尝试做同样的事情,它指的是现在已经存在于 DOM 中的同一个对象,并简单地获取该对象并重新附加它(Scott Marcus 说它充当移动时的意思)。

如果您先克隆它,那么您将引用一个完全不同的对象,除了您已经附加的任何对象之外,还可以附加该对象。


推荐阅读