由于页面的DOM树是活动的并且始终反映在浏览器中,因此在不影响实际渲染树的情况下,为某种目的修改此DOM树的最佳方法是什么?假设我的目的是交换某些子节点,看看DOM树仍然有多么相似。
创建重复树是唯一的解决方案吗?如果是,是否有这样做的功能?或者我是否需要编写自己的函数来创建树的副本。我不需要元素对象的所有属性,因此我可以创建一个更简单的对象,其中包含一些指向兄弟和子节点的属性。
答案 0 :(得分:6)
您可以在其他节点上使用document.cloneNode(true)
或相同的方法。 cloneNode
克隆任何节点,true
表示它应该是递归的(深层)。显然,这可能会在大页面上产生显着的性能成本。
答案 1 :(得分:2)
如果你愿意使用jQuery:
var clone = $("selectorForSomeElement(s)").clone();
clone
现在是元素结构的副本。
然后,您可以使用克隆来完成您喜欢的任何实验。
答案 2 :(得分:0)
也许可以考虑一下许多优秀的JavaScript库,例如: jQuery的。这些允许您轻松复制文档的部分甚至整个DOM,并从DOM中存储该appart。
如果您需要推出自己的解决方案,首先要了解Resig关于文档片段的帖子:http://ejohn.org/blog/dom-documentfragments/。
祝你好运。