当附加这样的复制元素时,我可以理解clone()方法的目的:
$aObject = $('.className').clone();
$aObject.removeAttr('id');
$('#add-line').click(function() {
$('#container').append( $aObject.clone());
});
但我不明白的是,如果我摆脱克隆方法,只需使用
$('#container').append( $aObject);
我仍然可以将多个相同的对象添加到容器中,但似乎我只能添加一次aObject?我们不能故意多次添加同一个对象,就像一个相同对象的数组一样?
答案 0 :(得分:1)
当您在JavaScript中将对象分配给变量时,实际上并不是指定存储在内存中的对象值 - 而是指向对象在内存中的位置的引用。
因此,当您声明$ aObject时,您现在已经存储了对特定对象的引用。附加它时,它的行为与您期望的一样,附加您引用的对象。当你尝试再次做同样的事情时,它指的是现在已经存在于DOM中的相同的对象,只需获取该对象并重新附加它(什么斯科特马库斯意味着当他说它充当行动时)。
如果您先克隆它,那么您将引用一个完全不同的对象,除了您已经附加的任何对象之外,还可以附加该对象。