使用append()时jQuery是否会生成深层或浅层副本

时间:2011-12-07 18:19:19

标签: jquery dom

示例代码:

jQueryElement.append(jQueryOtherElement.remove("#some-selector"))

这会复制我的元素并附加它还是会实际使用DOM对象?

基本上,我想知道上面的代码是否正在使用innerHTML,如果是这样,有没有办法(在jQuery中?)在从其他位置删除DOM节点后附加它们。

2 个答案:

答案 0 :(得分:3)

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

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

elem.parentNode.removeChild( elem )

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

答案 1 :(得分:0)

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