删除 d3js 不工作的事件侦听器

2024-01-27

我有一个 SVG 结构,里面有一些形状。我想在单击形状时触发一个事件,在 SVG 上单击时触发另一个事件。问题是 SVG 事件总是被触发。

为了防止这种情况,我禁用了形状的事件冒泡。我还尝试使用 d3 禁用该事件,但似乎不起作用。还尝试使用本机 Javascript 代码禁用事件。

超级简单的代码示例是:

SVG结构

<svg id="canvas" xmlns="http://www.w3.org/2000/svg" version="1.1">
    <g>
        <circle class="shape" r="10" cx="10" cy="10">
    </g>
</svg>

JavaScript 代码

d3.select('#canvas').on('click',svgClickEvents);

d3.selectAll('.item')
    .on("mouseover",mouseoverItem)
    .on('mouseleave',mouseleaveItem);

//click
d3.selectAll('.item',function(){

    //when an item is clicked, svgClickEvents must not be fired   
    d3.select('#canvas').on('click',null);  //this should remove the event listener
    //also tried with getElementById('canvas').removeEventListener('click',clickEvents,false);

d3.select(this)
        .on("click",function() {
            d3.event.stopPropagation(); 
            console.log("click circle")
        });
});

我知道事件没有被禁用,因为我得到了onsole.log()来自 clickEvents 函数的文本警报。


在这种情况下,语法:

d3.selectAll('.classname', function() { ... });

在 d3.js 中不起作用。相反,你应该使用类似的东西:

d3.selectAll('.classname').each(function() { ... });

所以在上面的代码中,这应该有效:

d3.selectAll('.item')
  .each(function(){

    //when an item is clicked, svgClickEvents must not be fired   
    d3.select('#canvas').on('click', null);  //this should remove the event listener

    d3.select(this).on("click",function() {
            d3.event.stopPropagation(); 
            console.log("click circle");
        });
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

删除 d3js 不工作的事件侦听器 的相关文章

  • 单击输入[复选框]的标签将触发父级单击事件两次(淘汰)

    考虑这把小提琴 http jsfiddle net 9rkrahm6 我有一个
  • dojo dijit.form.DateTextBox 约束不起作用,datetextbox

    嗨 我是 javascript 和 dojo 的新手 我正在尝试使用两个带有下拉日历的 dijit DateTextBox 来建立数据库查询的日期范围 一旦选择了开始日期或结束日期 我想限制可用的日期 以便不可能选择按时间顺序排列在开始日期
  • 如何在同一页面上使用AJAX处理多个表单

    我有一个表单 当我单击 提交 时 它就被提交了 然后该表单隐藏 操作页面的结果显示在 div 中 classname dig 它工作正常 但是当我添加另一个表单时 它停止正常工作并且所有表单同时提交 我如何更改我的代码 done click
  • 主干视图 DOM 元素已删除

    我一直在阅读有关 Backbone js 僵尸 或内存泄漏 问题的信息 基本上 当您不再需要该元素时 您必须从 DOM 中解除绑定并删除该元素 以确保所有事件也被删除 现在 我有一个包含几个容器的单页应用程序 div div div div
  • 每 3 秒重复一次动画

    我正在使用 WOW js 和 animate css 现在我正在将 CSS 运行到 Infinite 我想知道如何让我的课程运行 3 秒停止并再次开始到无限 My html img src images fork png class for
  • Web 串行 API - 未捕获(承诺中)DOMException:无法打开串行端口/所需成员 baudRate 未定义

    下面的代码可以在我的 Xubuntu 机器上运行 但现在我在 Kubuntu 上 它不再工作了 它不会打开端口 Arduino IDE 工作正常 可以向开发板写入代码 并且我可以在 Chrome 中选择设备 Arduino Uno 但当我尝
  • 如何重定向到 instagram://user?username={username}

    我的 html 页面上有这个链接 可以在特定用户上打开 Instagram 应用程序 a href Link to Instagram Profile a 我一直在寻找自动运行 url instagram user username USE
  • 使用 useReducers 调度函数发送多个操作?

    使用时是否可以通过调度函数发送多个动作useReducer挂钩反应 我尝试向它传递一组操作 但这会引发未处理的运行时异常 明确地说 通常会有一个初始状态对象和一个减速器 如下所示 const initialState message1 nu
  • 使用 Angular 下载具有动态 src 的脚本

    Angular 提供了通过动态名称动态加载模板的方法ng include 该部分中的内联 JS 和 CSS 可以正常加载 但没有一个好的方法来下载带有动态 url 的脚本 我们需要下载脚本 相对于调用它们的 html 部分的路径 即我们有一
  • 为什么是 javascript:history.go(-1);无法在移动设备上工作?

    首先 一些背景 我有一个向用户呈现搜索页面 html 表单 的应用程序 填写标准并单击 搜索 按钮后 结果将显示在标准部分下方 在结果列表中 您可以通过单击将您带到新页面的链接来查看单个结果的详细信息 在详细信息页面中 我添加了一个 返回结
  • 音频 blob 的 URL.createObjectURL 在 Firefox 中给出 TypeError

    我正在尝试从创建的音频 blob 创建对象 URLgetUserMedia 该代码在 Chrome 中可以运行 但在 Firefox 中存在问题 错误 当我打电话时stopAudioRecorder 它停在audio player src
  • Firefox 书签探索未超过 Javascript 的第一级

    我已经编写了一些代码来探索我的 Firefox 书签 但我只获得了第一级书签 即我没有获得文件夹中的链接 e g 搜索引擎 雅虎网站 谷歌网站 在此示例中 我只能访问 Search engines 和 google com 不能访问 yah
  • Laravel 中只向登录用户显示按钮

    如果我以 John 身份登录 如何才能只显示 John 的红色按钮而不显示 Susan 的红色按钮 测试系统环境 Win10 Laravel5 4 Mysql5 7 19 table class table table responsive
  • FireFox 中的自动滚动

    我的应用程序是实时聊天 我有一个 Div 来包装消息 每条消息都是一个 div 所以 在几条消息之后 我的 DOM 看起来像这样 div div Message number two div div div div
  • 如何获取给定 DOM 元素的所有定义的 CSS 选择器?

    如何使用 jQuery 获取给定 DOM 元素的所有定义的 CSS 选择器 定义后 我的意思是在应用于任何样式表的所有 CSS 选择器document 在某种程度上 这类似于 FireBug 实现的功能 其中显示所选 DOM 元素的所有应用
  • 有没有办法阻止 prettier / prettier-now 将函数参数分解为新行

    当使用 prettier prettier now 在保存时进行格式化时 当一个函数包装另一个函数时 它会中断到一个新行 我想知道是否有办法阻止这种行为 例如 期望的输出 app get campgrounds id catchAsync
  • 条件在反应本机生产中失败,但在开发中有效

    我创建了一个反应本机应用程序 我需要通过它进行比较 如果属实 就会执行死刑 问题是 该条件适用于 React Native 开发模式 而不适用于 React Native 生产版本 我使用 firebase 作为数据库 也使用 redux
  • Javascript 纪元时间(以天为单位)

    我需要以天为单位的纪元时间 迄今为止 我已经看到过有关如何翻译它的帖子 但几天后就没有了 我对纪元时间很不好 我怎么能得到这个 我需要以天为单位的纪元时间 我将解释为您想要自纪元以来的天数 纪元本身是第 0 天 或第 1 天的开始 无论您如
  • 如何获取浏览器视口中当前显示的内容

    如何获取当前正在显示长文档的哪一部分的指示 例如 如果我的 html 包含 1 000 行 1 2 3 9991000 并且用户位于显示第 500 行的中间附近 那么我想得到 500 n501 n502 或类似的内容 显然 大多数场景都会比
  • 导致回发到与弹出窗口不同的页面

    我有一个主页和一个详细信息页面 详细信息页面是从主页调用的 JavaScript 弹出窗口 当单击详细信息页面上的 保存 按钮时 我希望主页 刷新 是否有一种方法可以调用主页的回发 同时还可以从详细信息页面维护保存回发 Edit 使用win

随机推荐

  • 什么是服务总线?我什么时候需要服务总线?

    我听说过关于N服务总线 http particular net nservicebus 但我还没有真正理解它是什么 他们声称自己是 最流行的 net 开源服务总线 什么是服务总线 我什么时候需要服务总线 您可以将服务总线视为 SOA 面向服
  • 通过虚拟地址刷新/无效范围; ARMv8;缓存;

    我正在为 32 位模式下运行的 ARMv8 Cortex A53 实现缓存维护功能 当我尝试使用虚拟地址 VA 刷新内存区域时出现问题 DCacheFlushByRange看起来像这样 some init kDCacheL1 0 kDCac
  • 如何更新 PostgreSQL 中的大量行?

    我需要更新表中的数千行 例如 我有 1000 行 id 为 1 2 1000 mytable id value1 value2 1 Null Null 2 Null Null 1000 Null Null 现在我需要更改前 10 行 我可以
  • PHP数据库不会保存数据

    我有从视频教程系列中获得的以下代码 我听说下面的代码的某些部分被认为是不好的做法 我一直试图让它保存我的注册信息 但它不起作用 它可以很好地检测填写表单时的错误 它还显示 请登录以开始 当我正确提交所有内容时 但它不会将任何数据保存到数据库
  • XAML 解析异常:属性 {StaticResource PhoneAccentBrush} 值超出范围

    我遇到异常问题 找不到如何修复它的答案 属性 StaticResource PhoneAccentBrush 值超出范围 System Windows Application LoadComponent this new System Ur
  • 具有可选参数的 ViewComponent

    我正在创建一组代表不同视图上的过滤器的视图组件 到目前为止 它们工作得很好 但我不明白我所经历的这种行为 如果我使用声明两个 InvokeAsync public async Task
  • 我如何从 Rational(或任何没有构造函数的类)继承?

    我可以很容易地继承 比如说 String例如 像这样 class MyString lt String def stuff self and stuff end end This works MyString new things stuf
  • 想要执行sp_send_dbmail并以excel格式发送结果

    我想执行 sp send dbmail 并以 Excel 格式通过电子邮件发送结果 我尝试过 csv 和 txt 但结果没有组织在整齐的列中 这是我的代码 EXEC msdb dbo sp send dbmail profile name
  • 当 Toolkit.getDefaultToolkit() 抛出 AWTError 时,如何在 Java 中读取图像?

    我正在使用 Java 读取图像文件 java awt Image img Toolkit getDefaultToolkit createImage filePath 在某些系统上这不起作用 它会抛出一个 AWTError 抱怨 sun a
  • Powershell、EWS、OAuth2 和自动化

    我正在尝试查找有关如何使用 PowerShell 对 EWS 实施非交互式 Oauth2 身份验证的文档 但我可能没有使用正确的搜索词 因为我找不到任何有用的内容 我在 OAuth2 上找到的 Microsoft 文档只有 C 文档 那么
  • 为什么不能使用同一个 Span 对象来 setSpan 两次?

    为什么不能使用同一个 Span 对象来 setSpan 两次 SpannableString ss new SpannableString aaaaa 1 bbbb 1 cccc 1 我需要用图像替换所有 1 如果我使用以下代码 则只有最后
  • 使用 Airflow 执行频繁任务

    我们使用 Airflow 一段时间了 它非常棒 现在我们正在考虑将一些非常频繁的任务也转移到我们的气流服务器中 假设我每秒运行一个脚本 使用气流安排它的最佳实践是什么 在每秒计划的 DAG 中运行此脚本 我非常怀疑这是否是解决方案 DAGR
  • 更新页面以使用 Greasemonkey 添加新链接

    大多数时候 JScript 都让我头疼 但设计糟糕的网站更让我头疼 Foursquare 的超级用户就是这样的一个例子 期望的结果 一个 Greasemonkey 脚本 它将检查 DIV 类的每次出现搜索结果 以及 DIV 类之后name附
  • WindowsFormsHost 中的 ILScene

    我正在尝试在 WPF 中的 WindowsFormsHost 控件中托管 ILPanel 这是我的代码 XAML
  • 哪些手机支持哪种 J2ME(Java 微型版)规范?

    我只是找不到关于哪些移动设备支持哪些 Java 的最新图表 微版版本 我特别感兴趣诺基亚智能手机以及他们对新事物的支持JME 3 0 我想知道Sun似乎没有提供此类信息 如果您知道的话 请给我一些链接 EDIT 我可能把事情搞混了 MIDP
  • 返回带有字段名称而不是别名的 pydantic 模型作为 fastapi 响应

    我试图用定义的字段名称而不是别名返回我的模型 class FooModel BaseModel foo str Field alias bar app get gt FooModel return FooModel bar baz 响应将是
  • jsTree 拖放按类限制文件夹

    如何通过类名 class locked 锁定文件夹上的拖动功能 同时锁定其他要拖到该文件夹 中的文件夹class locked 我想要一个既具有拖放功能又具有上下文菜单的设置 如果节点的类名 锁定 我只想禁用上下文菜单的编辑以及拖入此文件夹
  • 使用 python 有效提取 1-5 克

    我有一个 3 000 000 行的巨大文件 每行有 20 40 个单词 我必须从语料库中提取 1 到 5 个 ngram 我的输入文件是标记化的纯文本 例如 This is a foo bar sentence There is a com
  • 用于从 Google Sheets URL 中提取电子表格 ID 和工作表 ID 的 JavaScript 正则表达式

    我想要 Javascript 正则表达式从 google 表格 URL 中提取电子表格 ID 和工作表 ID Sheets google com 电子表格的 URL 如下所示 https docs google com spreadshee
  • 删除 d3js 不工作的事件侦听器

    我有一个 SVG 结构 里面有一些形状 我想在单击形状时触发一个事件 在 SVG 上单击时触发另一个事件 问题是 SVG 事件总是被触发 为了防止这种情况 我禁用了形状的事件冒泡 我还尝试使用 d3 禁用该事件 但似乎不起作用 还尝试使用本