如何在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);
});

此处有一些数据