2011-12-07 26 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