js 如何把 remove 的 dom 重新插入原位置?
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
</head>
<body>
<style></style>
<div id="app">
<div class="parent1">
parent1
<div class="parent2">
parent2
<div class="parent3">parent3</div>
</div>
</div>
</div>
</body>
</html>
html结构如上
const parent2 = document.querySelector('.parent2');
parent2.remove();
setTimeout(()=>{
//一秒后 我想把 parent2 插入回原处, 请问如何实现?有点类似于 vue的 v-if
},1000)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
你在remove之前先cloneNode一下,remove以后把clone的添加进去就行了。
以下有一个实现的demo给你:
这种最好是用
display
来实现,不然你要记录dom的位置才行较为复杂,这里给出一种方式(有缺陷的,仅限移除一个,多处移除会有问题)不好整。因为你缺少排序规则。vue中可以是因为本身他的模版就是排序。
你其实可以参照下面这样理解,他是把dom结构重新生成了。(当然,他没有这么暴力)所以他生成的是有序的。
你这个如果不考虑这些,你可以拿一下前后的dom,然后直接给他 after 或者 before 进去。如果插入的时候前后都不在了,那么就只能 append 了。当然,这里算法你可以自由修改。比如说最开始存储一下排序,然后插入的时候去比对最合适的位置。
为什么remove又要插入,可以让他隐藏过一会再显示不好吗?