使用 outerhtml 添加标签,click 事件无法触发
文中提到的问题是在使用 outerHTML 添加自定义标签后,监听标签的 click 事件无法触发。
该问题的原因是,当使用 outerHTML 添加标签时,会将整个标签及其子元素作为一个字符串插入到 dom 中。此时,浏览器无法识别新添加的标签,因此无法触发其事件。
解决方法:
要解决此问题,可以使用以下方法:
立即学习“前端免费学习笔记(深入)”;
- 直接监听容器(div)的 click 事件,然后判断点击事件的目标是否是新添加的标签。如果是,则执行相应的处理逻辑。
以下是修改后的代码:
handleClick(e) { // 判断点击的是 SPAN 节点(删除图标) if (e.target.nodeName === "SPAN") { // 如果是删除按钮,删除标签 e.target.parentNode.remove(); } }
登录后复制
- 使用 appendChild 方法,手动添加新标签到容器中。这种方法可以确保新标签被浏览器正确识别,从而可以触发事件。
以下是如何使用 appendChild 方法添加标签的代码:
const newNode = document.createElement("smstag"); newNode.innerText = tempValue; newNode.id = this.getGuid(); // 添加删除按钮 const deleteBtn = document.createElement("span"); deleteBtn.innerText = "x"; // 删除按钮添加类名 deleteBtn.className = "deleteBtn"; deleteBtn.addEventListener("click", () => { newNode.remove(); }); newNode.appendChild(deleteBtn); // 使用 appendChild 将新标签添加到容器中 this.$refs.templateInputRef.appendChild(newNode);
登录后复制
通过使用以上方法之一,可以解决使用 outerHTML 添加标签后,click 事件无法触发的问题。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
【小浪云服务商 - 服务器12元起 - 挂机宝5元起】
THE END
暂无评论内容