2011-12-07 22 views
2

示例代码时的jQuery做深或浅拷贝?是否使用append()

基本上,我和想知道如果上述代码是使用的innerHTML如果是这样,有一种方法(在jQuery的?)从其他位置取出之后,所述DOM节点追加。

+0

我认为马特卸下摆臂是否最先被执行或者在他的案件 – defau1t

+0

追加@refhat不,我不会混乱的混乱。 – Matthew

+0

那么如果你已经删除了某些东西,你该如何追加它。 – defau1t

回答

3

实际上,它将使用由.remove()通话中移除的DOM对象 - 它不使用的innerHTML,而是实际的DOM节点。由于先前的DOM对象已从DOM中删除并可插入,因此不需要复制。

如果你看一下jQuery的1.7码,remove函数内部调用:

elem.parentNode.removeChild(elem) 

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

+0

感谢您对评论+1添加。 – defau1t

+0

另一个问题:这些DOM节点会维护应用于它们的jQuery.data()吗?原谅我的无知,但我只是不熟悉jQuery的许多内部工作。 – Matthew

+4

@Matt - '.remove()'显式删除所有jQuery数据。如果你想保留jQuery数据,你可以使用'.detach()'。参考文献:['.remove()'](http://api.jquery.com/remove/),['.detach()'](http://api.jquery.com/detach/)。 – jfriend00

0

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

+0

@Matt:Ahahaha。好的。 – Ryan