使用 outerHTML 添加标签后,点击事件无法触发,该如何解决?

使用 outerHTML 添加标签后,点击事件无法触发,该如何解决?

使用 outerhtml 添加标签,click 事件无法触发

文中提到的问题是在使用 outerHTML 添加自定义标签后,监听标签的 click 事件无法触发。

该问题的原因是,当使用 outerHTML 添加标签时,会将整个标签及其子元素作为一个字符串插入到 dom 中。此时,浏览器无法识别新添加的标签,因此无法触发其事件。

解决方法:

要解决此问题,可以使用以下方法:

立即学习前端免费学习笔记(深入)”;

  1. 直接监听容器(div)的 click 事件,然后判断点击事件的目标是否是新添加的标签。如果是,则执行相应的处理逻辑。

以下是修改后的代码:

handleClick(e) {   // 判断点击的是 SPAN 节点(删除图标)   if (e.target.nodeName === "SPAN") {     // 如果是删除按钮,删除标签     e.target.parentNode.remove();   } }
登录后复制
  1. 使用 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 事件无法触发的问题。

© 版权声明
THE END
喜欢就支持一下吧
点赞13 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容