Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何删除某些元素的所有事件侦听器而不删除其子元素的_Javascript_Jquery - Fatal编程技术网

Javascript 如何删除某些元素的所有事件侦听器而不删除其子元素的

Javascript 如何删除某些元素的所有事件侦听器而不删除其子元素的,javascript,jquery,Javascript,Jquery,如何删除例如$'table td'的事件监听器,但不删除其子元素事件监听器?我有一张格子里有按钮的桌子 我试过了,但没用 编辑:例如,我有一个表格单元格,其中有一些文本和一个按钮。现在td和button有了自己的事件侦听器。我只想删除td的事件侦听器,而不想删除button的事件侦听器。我知道我可以在删除按钮后将事件监听器添加回按钮,但这种解决方案在我的情况下会导致很多问题。我猜您已经看到了这样的答案,因为您提到没有删除子元素上的事件监听器。当然,执行深度克隆不起作用,但可以起作用的是执行浅层克

如何删除例如$'table td'的事件监听器,但不删除其子元素事件监听器?我有一张格子里有按钮的桌子 我试过了,但没用


编辑:例如,我有一个表格单元格,其中有一些文本和一个按钮。现在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的事件处理程序。。。看看这个