javascript - 如何在javascript中为空后保留dom的副本?
问题描述
基本上我想在调用函数后记录一个 DOM 子节点empty()
。
我在下面尝试过,但我的副本是空的:
$(document).ready(function(){
var root = document.getElementById('root');
var rootDuplicate = root;
$(root).empty();
console.log(rootDuplicate.childNodes);
});
演示:https ://jsfiddle.net/sgLub16d/21/
在上面,如果你删除$(root).empty();
线。rootDuplicate
然后包含孩子。
解决方案
考虑replaceWith
改用 - 这样,您可以用空替换,<span id="root">
同时保留对旧填充的引用:
var root = document.getElementById('root');
var rootDuplicate = root;
$(root).replaceWith($('<span id="root" />'));
console.log(rootDuplicate.childNodes.length);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<span id="root">some data<span id="child"> here</span></span>
另一种方法是.childNodes
先将 保存在数组中:
const children = [...$('#root')[0].childNodes];
$('#root').empty();
console.log(children.length);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<span id="root">some data<span id="child"> here</span></span>
推荐阅读
- javascript - 在 Hyperstack 中使用 javascript 代替蛋白石
- aurelia - Aurelia store connectTo 从不设置目标属性
- r - 降价到PDF中的标题和无花果标题问题
- c++ - 如何在 C++ 中对齐用户输入(不使用 iomanip)
- android - React Navigation 3:Android 中的后退按钮不会返回到上一个屏幕
- windows - CommandLineToArgvW 怪癖
- javascript - 手动将全局注册的 Vue 组件挂载到旧版应用程序中?
- url-rewriting - Azure API 管理:替换查询字符串参数名称
- javascript - js - 修剪功能仅适用于前导新行和制表符
- python - 为什么这个程序在“猜测”数字是随机生成的时候可以工作,但在它基于上限和下限的平均值时却不行?