我想修改DOM子樹並在一段時間後恢復它。我怎樣才能將子樹副本保存在一邊(與實際的子樹一起玩)?之後如何恢復保存的副本?如何克隆(並恢復)DOM子樹
回答
如果我讀這個權利,那麼我認爲,所有你需要做的是:
var DomTreeCopy = $('parentElementSelector').clone(true,true);
然後重新裝上DomTreeCopy
(代替原來的):
$('parentElementSelector').replaceWith(DomTreeCopy);
還是要另外它添加到DOM原文:
$(DomTreeCopy).insertAfter($('parentElementSelector'));
個
參考文獻:
可以使用$.data()
...方法
$.data(document.body, "sortElement", "0"); //set value
$.data(document.body, "sortElement"); //read value
這是你可以存儲所有你想在一個字典類型啥子 - 再後來重用。
哦..這更有效,更正確! – 2012-01-02 14:56:20
您可以將克隆的對象存儲在DOM中的其他位置。修改可見的DOM。當你需要實際值時,你可以從你追加的地方追蹤它。
<div id="oldInfo"></div>
$("#youActualDom").clone().appendTo("#oldInfo").hide();
然後跟蹤與$("#oldInfo")
原來DOM使用簡單的JavaScript:
var elem = document.getElementById('theElement'),
backupElem = elem.cloneNode(true);
// Your tinkering with the original
elem.parentNode.replaceChild(backupElem, elem);
請注意,使用此方法,您的事件處理程序是
而不是已恢復。但是你也可以支持它們,因爲它們只是普通的功能。
原來,我錯了。事件處理程序被保留,因爲它是您要還原的原始DOM。如果您正在複製它並將它附加到別處,則不會複製事件處理程序。 This demo顯示事件處理程序保持不變。
您能否詳細說明事件處理程序? – BreakPhreak 2012-01-02 15:30:46
@BreakPhreak看起來我錯了。看到我的答案。 – 2012-01-02 16:01:12
- 1. 恢復git-svn克隆
- 2. 從SVN,SVN克隆恢復不--stdlayout
- 3. javascript克隆元素樹並更改克隆中的所有ID
- 4. 如何克隆即DOM元素
- 5. 導航DOM,如何恢復?
- 6. 如何在mercurial中暫停/恢復存儲庫克隆?
- 7. 如何只恢復一個文件克隆git回購?
- 8. 如何撤消/恢復「Heroku的混帳:克隆」
- 9. 如何確保克隆子模塊,如果不克隆,請克隆它?
- 10. 如何克隆元素並更改其DOM類型
- 11. 克隆DIV不是在DOM
- 12. 如何在DOM樹中保存/恢復對象的位置?
- 13. 如何克隆div並使用regEx而無需再次克隆?
- 14. 從版本號恢復git svn克隆而不重複
- 15. 克隆,播放和替換克隆的Dom-Javascript/Jquery
- 16. jQuery克隆:它應該克隆DOM級別0事件嗎?
- 17. 解壓縮Git克隆失敗 - 空間不足 - 如何在沒有完整克隆的情況下恢復?
- 18. 如何使用http來克隆克隆?
- 19. 如何批量克隆克隆
- 20. 克隆/複製SimpleScriptContext
- 21. 如何克隆jQuery UI複選框?
- 22. 如何複製或克隆模型?
- 23. 如何創建克隆重複視圖?
- 24. 如何複製/克隆數據庫
- 25. 用於克隆子
- 26. 如何從Android源克隆子分支?
- 27. 如何克隆一個離子項目?
- 28. 如何克隆,並附加錶行
- 29. 如何使用asp.net克隆/複製控件(使用子控件)?
- 30. 如何克隆/複製模型實例並保留其關聯?
謝謝。因爲克隆不會支持CSS樣式/事件處理程序,所以共享upvote,而不是標記爲完美答案?我說得對嗎? – BreakPhreak 2012-01-02 17:00:15
您是否閱讀過clone()'的參考資料?傳遞給方法的第一個「true,true」參數意味着它複製綁定到這些元素的數據和事件。第一個「true」適用於克隆的元素,第二個「true」適用於克隆元素的子元素。只要你的樣式表支持被克隆元素匹配的選擇器,那麼CSS就會自動應用/自動應用。 – 2012-01-02 17:04:13
謝謝你指出我缺少的一些細節。 – BreakPhreak 2012-01-03 07:13:43