javascript - (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 说它充当移动时的意思)。
如果您先克隆它,那么您将引用一个完全不同的对象,除了您已经附加的任何对象之外,还可以附加该对象。
推荐阅读
- ios - 推送新的 UIViewController 时 UISearchController 消失
- sitecore - SitecoreJSS 9.1 发布日期和 SitecoreJSS 9 限制
- r - ggraph - 根据频率增加节点大小
- javascript - NodeJS - 使用返回的 Promise 更新对象
- java - Android Studio:是否可以同时运行两个活动?
- gitlab - 更改 gitlab 运行器的克隆目录
- package - 在主函数(Scala)中无法检测到创建的单例对象
- c# - c# - 如何从 ac# 程序调用/链接 Web 应用程序上的工作流?
- java - 使用 selenium 上传文件时出现问题
- python - 主管无法运行 Gunicorn 命令