JavaScript DOM树的复制以进行操作

7

既然页面的DOM树是活动的且始终反映在浏览器中,那么最好的方法是什么,可以修改这个DOM树以达到某种目的,而不影响实际呈现的树?假设我的目的是交换某些子节点并查看DOM树仍然保持多么相似。

创建一个重复的树是唯一的解决方案吗?如果是这样的话,是否有函数可以做到这一点?还是我需要编写自己的函数来创建树的副本?我不需要元素对象的所有属性,因此可以创建一个较简单的对象,其中包含指向同级和子级的几个属性。

3个回答

8
您可以使用document.cloneNode(true)或在其他节点上使用相同的方法。 cloneNode克隆任何节点,而true表示它应该是递归的(深度)。显然,在大页面上这可能会产生显着的性能成本。

但是新节点的childNodes属性仍将指向原节点的子节点。或者整个子树会被克隆吗? - euphoria83

2

如果您愿意使用jQuery:

var clone = $("selectorForSomeElement(s)").clone();

clone现在是元素结构的一个副本。

然后,您可以通过克隆来进行任何喜欢的实验。


0
也许考虑使用众多优秀的JavaScript库之一,例如jQuery。这些库允许您轻松地复制文档的部分甚至整个DOM,并将其与DOM分开存储。
如果您需要自己开发解决方案,则可以从Resig的文档片段入手:http://ejohn.org/blog/dom-documentfragments/
祝您好运。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接