Javascript 如何删除某些元素的所有事件侦听器而不删除其子元素的
如何删除例如$'table td'的事件监听器,但不删除其子元素事件监听器?我有一张格子里有按钮的桌子 我试过了,但没用Javascript 如何删除某些元素的所有事件侦听器而不删除其子元素的,javascript,jquery,Javascript,Jquery,如何删除例如$'table td'的事件监听器,但不删除其子元素事件监听器?我有一张格子里有按钮的桌子 我试过了,但没用 编辑:例如,我有一个表格单元格,其中有一些文本和一个按钮。现在td和button有了自己的事件侦听器。我只想删除td的事件侦听器,而不想删除button的事件侦听器。我知道我可以在删除按钮后将事件监听器添加回按钮,但这种解决方案在我的情况下会导致很多问题。我猜您已经看到了这样的答案,因为您提到没有删除子元素上的事件监听器。当然,执行深度克隆不起作用,但可以起作用的是执行浅层克
编辑:例如,我有一个表格单元格,其中有一些文本和一个按钮。现在td和button有了自己的事件侦听器。我只想删除td的事件侦听器,而不想删除button的事件侦听器。我知道我可以在删除按钮后将事件监听器添加回按钮,但这种解决方案在我的情况下会导致很多问题。我猜您已经看到了这样的答案,因为您提到没有删除子元素上的事件监听器。当然,执行深度克隆不起作用,但可以起作用的是执行浅层克隆,然后将子节点传输到克隆。这是一个多一点的工作,但它会做你想要的 主要工作是在setTimeout中,其余的都只是设置 这里我附加了两个单击事件监听器:一个到按钮,一个到容器div。在5秒设置超时之前,单击按钮将触发两个监听器,因此您将看到按钮和div的控制台日志。在计时器之后,您仍然会看到按钮事件 var rem=document.getElementById'rem'; var btn=document.getElementById'btn'; 函数onclick{ var t=e.currentTarget console.logt.tagName; } rem.addEventListener“单击”,onClick; btn.addEventListener'click',onClick; 设置超时=>{ 记录“从div中删除事件”; //浅克隆 var rem2=rem.cloneNodefalse; //生成并提取文档片段的范围 //对于原始div的所有内容 var range=document.createRange; range.setstartforerem.firstChild; range.setEndAfterrem.lastChild; var documentFragment=range.extractContents; //将文档片段追加到克隆 //插入克隆并删除旧div rem2.1片段; document.body.insertBeforerem2,rem; rem.remove; }, 5000; 标题 点击我 段落粗体字
我最终使用了名称空间,如“click.namespace”函数{…}上的名称空间。
谢谢你们的帮助 您能否创建一个演示您目前正在使用的东西,请或至少包括相关的源代码?谢谢。在像td这样的元素上使用.off实际上并不会删除child的事件处理程序。。。看看这个