使用append()时,jQuery是进行深度复制还是进行浅层复制

使用append()时,jQuery是进行深度复制还是进行浅层复制,jquery,dom,Jquery,Dom,示例代码: jQueryElement.append(jQueryOtherElement.remove("#some-selector")) 这将复制我的元素并附加它,还是它将实际使用DOM对象 基本上,我想知道上面的代码是否使用innerHTML,如果是的话,是否有一种方法(在jQuery中?)在从另一个位置删除DOM节点后附加它们。它实际上将使用.remove()调用删除的DOM对象-它不是使用innerHTML,而是使用实际的DOM节点。无需复制,因为以前的DOM对象已从DOM中删除,

示例代码:

jQueryElement.append(jQueryOtherElement.remove("#some-selector"))
这将复制我的元素并附加它,还是它将实际使用DOM对象


基本上,我想知道上面的代码是否使用innerHTML,如果是的话,是否有一种方法(在jQuery中?)在从另一个位置删除DOM节点后附加它们。

它实际上将使用
.remove()
调用删除的DOM对象-它不是使用innerHTML,而是使用实际的DOM节点。无需复制,因为以前的DOM对象已从DOM中删除,并且可以插入

如果查看jQuery 1.7代码,remove函数会在内部调用:

elem.parentNode.removeChild( elem )

它只是从DOM中删除节点。所有节点都留在jQuery对象中,因此当您在该jQuery对象上调用append时,它们仍然可以直接附加任何副本或转换。

是的,它将使用DOM对象。它们仍然存在,只是不在另一个元素中。jQuery对象不是魔法:)

我认为matt不清楚是先执行.remove还是在他的case@refhat不,我对此并不感到困惑。那么,如果您已经删除了某些内容,您如何才能附加这些内容。@refhat-
.remove()
从DOM中删除DOM元素,但将它们保留在jQuery对象中。只要某些代码保持对DOM元素的引用,DOM元素就可以存在于DOM之外。然后,该jQuery对象被传递到
.append()
,在那里它们被重新插入到DOM中。感谢添加的注释+1。另一个问题:这些DOM节点是否会保留应用于它们的任何jQuery.data()?请原谅我的无知,我只是不熟悉jQuery的许多内部工作。@Matt-
.remove()
显式删除所有jQuery数据。如果要保留jQuery数据,可以使用
.detach()
。参考文献:。