神奇的 adoptNode 元素克隆 – 博客更新(一百一十一)

2BROEAR 15-08-2022
最近更新于:2022-08-29 11:53:21

通常,我们使用 js 来克隆某一元素时一般会优先考虑 cloneNode(deep) 方法,通过该方法我们可以非常轻松实现元素克隆。当我们使用 on.xxx 为被克隆元素添加方法后,再使用 cloneNode 对其进行克隆后的元素将不再附带其自定义事件,也就是说:cloneNode()无法克隆事件(除元素内联事件外),这就导致其在部分场景无法适用。(注:在 jQuery 中的替代为 clone() 方法,该方法可以完整克隆自定义事件)
后了解到 importNode()及adoptNode(),前者与 cloneNode 一样无法克隆事件,后者则不同:adoptNode(Node)方法用于从另外一个文档中获取一个节点(可以是任何节点类型) adoptNode()会将原文档中的节点删除,类似元素“剪贴”后保留所有事件,这也是我们想要的。


评论留言

既来之则留之,欢迎在下方留言评论。提交评论后还可以撤销或重新编辑,未发布的留言会被储存在本地以供下次继续编辑(Valine 会自动保存您的评论信息到浏览器)