jQuery 使用append() 时是进行深拷贝还是浅拷贝
示例代码:
jQueryElement.append(jQueryOtherElement.remove("#some-selector"))
这会复制我的元素并附加它,还是会实际使用 DOM 对象?
基本上,我想知道上面的代码是否使用innerHTML,如果是,是否有一种方法(在jQuery中?)在从另一个位置删除DOM节点后附加它们。
Example code:
jQueryElement.append(jQueryOtherElement.remove("#some-selector"))
Will this make a copy of my element and append it or will it actually use the DOM objects?
Basically, I'm wondering if the above code is using innerHTML and if so, is there a way (in jQuery?) to append the DOM nodes after removing them from another location.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
它实际上会使用
.remove()
调用删除的 DOM 对象 - 它不使用innerHTML,而是实际的 DOM 节点。无需复制,因为之前的 DOM 对象已从 DOM 中删除并且可以插入。如果你看一下 jQuery 1.7 代码,remove 函数在内部调用:
它只是从 DOM 中删除节点。这些节点都保留在 jQuery 对象中,因此当您在该 jQuery 对象上调用追加时,它们仍然可以通过任何复制或转换直接附加。
It will actually use the DOM objects removed by the
.remove()
call - it is not using innerHTML, but rather the actual DOM nodes. There is no need to copy as the previous DOM objects were removed from the DOM and are available to be inserted.If you look at the jQuery 1.7 code, the remove function internally calls:
which just removes the node from the DOM. The nodes are all left in the jQuery object so when you then call append on that jQuery object, they are all still available to be appended directly with any copy or conversion.
是的,它将使用 DOM 对象。它们仍然存在,只是不在另一个元素内。 jQuery 对象并不神奇:)
Yes, it'll use the DOM objects. They still exist, just not inside another element. jQuery objects aren't magic :)