如何在javascript中保持dom为空后的副本?
基本上,我希望在调用函数如何在javascript中保持dom为空后的副本?,javascript,jquery,Javascript,Jquery,基本上,我希望在调用函数empty()后保留DOM子对象的记录 我在下面试过,但我的副本是空的: $(document).ready(function(){ var root = document.getElementById('root'); var rootDuplicate = root; $(root).empty(); console.log(rootDuplicate.childNodes); }); 演示: 如果删除$(root).empty()行rootDupl
empty()
后保留DOM子对象的记录
我在下面试过,但我的副本是空的:
$(document).ready(function(){
var root = document.getElementById('root');
var rootDuplicate = root;
$(root).empty();
console.log(rootDuplicate.childNodes);
});
演示:
如果删除
$(root).empty()代码>行rootDuplicate
然后包含子项。考虑改用replaceWith
替换-这样,您可以替换为空的
,同时保留对旧填充的引用:
var root=document.getElementById('root');
var rootDuplicate=根;
$(根)。替换为($('');
log(rootDuplicate.childNodes.length)代码>
这里的一些数据
您可以使用cloneNode(deep)
方法DOM
api来获取节点的副本以供将来参考
克隆节点会复制其所有属性及其值,包括内部(内联)侦听器。它不会复制使用addEventListener()添加的事件侦听器或分配给元素属性的事件侦听器(例如node.onclick=someFunction)。此外,对于元素,不会复制绘制的图像
提示:使用appendChild()或insertBefore()方法将克隆节点插入文档
提示:如果要克隆所有子体(子体),请将deep参数值设置为true,否则为false
参数
deep
Boolean可选。指定是否应克隆节点的所有子体
true
-克隆节点及其属性和子节点。
false
-默认值。仅克隆节点及其属性
警告
cloneNode()可能导致文档中的元素ID重复
$(文档).ready(函数(){
让root=document.getElementById('root');
设cln=root.cloneNode(true);
$(root.empty();
console.log(cln.childNodes);
});代码>
试验
我的答案是使用jQuery方法
基本上,您将把元素复制到变量中(rootDuplicate
)
注意,在下面的示例中,rootDuplicate
是一个jQuery元素。因此,我在它上面使用了[0]
来控制台记录.childnodes
属性
$(文档).ready(函数(){
变量根=$(“#根”);
var rootDuplicate=root.clone();
root.empty();
console.log(rootDuplicate[0].childNodes);
});代码>
此处有一些数据