(jQuery) 不能多次附加同一个对象



我可以理解clone((方法在附加如下复制元素时的目的:

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

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

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

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

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

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

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

最新更新