既然页面的DOM树是活动的且始终反映在浏览器中,那么最好的方法是什么,可以修改这个DOM树以达到某种目的,而不影响实际呈现的树?假设我的目的是交换某些子节点并查看DOM树仍然保持多么相似。
创建一个重复的树是唯一的解决方案吗?如果是这样的话,是否有函数可以做到这一点?还是我需要编写自己的函数来创建树的副本?我不需要元素对象的所有属性,因此可以创建一个较简单的对象,其中包含指向同级和子级的几个属性。
既然页面的DOM树是活动的且始终反映在浏览器中,那么最好的方法是什么,可以修改这个DOM树以达到某种目的,而不影响实际呈现的树?假设我的目的是交换某些子节点并查看DOM树仍然保持多么相似。
创建一个重复的树是唯一的解决方案吗?如果是这样的话,是否有函数可以做到这一点?还是我需要编写自己的函数来创建树的副本?我不需要元素对象的所有属性,因此可以创建一个较简单的对象,其中包含指向同级和子级的几个属性。
document.cloneNode(true)
或在其他节点上使用相同的方法。 cloneNode
克隆任何节点,而true
表示它应该是递归的(深度)。显然,在大页面上这可能会产生显着的性能成本。如果您愿意使用jQuery:
var clone = $("selectorForSomeElement(s)").clone();
clone
现在是元素结构的一个副本。
然后,您可以通过克隆来进行任何喜欢的实验。