如何在d3中将事件从一个元素传递到另一个元素?

流行音乐

我在 rect 元素前面有一个文本元素。rect 元素响应wheel事件以便它可以滚动。文本元素响应drag事件以便它可以被移动。

当鼠标指针悬停在文本元素上时,它会阻止 rect 元素获取wheel事件。

我无法在文本元素上设置pointer-eventsnone,因为它也需要响应单击和拖动。

当在wheeltext 元素上检测到事件时,有没有办法将其传递给 rect 元素?

我查看了 dispatch 函数,但我不想创建新事件。我只想传递事件。

当文本元素获取wheel事件时调用 rect 元素的事件处理程序似乎有效。这需要调用无关对象的方法,所以我想避免它。

下面是一些简化的代码:

var container = d3.create("svg:g")

var rectElem = container.append("rect")
 .on("wheel",handleScroll)

var textElem = container.append("text")
 .call(d3.drag().on("drag",handleDrag))
 .on("wheel",(e)=>{ 
   // How to send event to rect element ?
 })

流行音乐

指向这个答案的altocumulus 的评论出来

有两种方法可以做到这一点。

选项1

wheel,使得其从所述rect元素和属于它里面的文本元素都冒泡事件处理可以移动到该容器元素。

var container = d3.create("svg:g")
 .on("wheel",handleScroll)

var rectElem = container.append("rect")

var textElem = container.append("text")
 .call(d3.drag().on("drag",handleDrag))

选项 2

文本元素接收到的事件可以被克隆并分派到 rect 元素。(它必须被克隆。不能重复使用相同的事件)。

var container = d3.create("svg:g")

var rectElem = container.append("rect")
.on("wheel",handleScroll)

var textElem = container.append("text")
 .call(d3.drag().on("drag",handleDrag))
 .on("wheel",(e)=>{rectElem.node().dispatchEvent(new WheelEvent(e.type,e))})

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在单击元素时将 id 从一个组件传递到另一个组件

如何在CakePHP 3中将数据从一个控制器传递到另一个控制器?

反应钩子。如何将args从一个元素传递到另一个

如何在Robo3T中将结果从一个查询传递到另一个

将引用的内容从一个子元素传递到另一个VueJS子元素

使用 JavaScript 将 ID 从一个 html 元素传递到另一个元素

如何在Selenium WebDriver中从一个类到另一个类调用Web元素

如何在Unity3d中将C#组件从一个游戏对象传递到另一个

如何在Angular2中将变量值从一个组件传递到另一个

如何在Jinja2中将变量从一个模板传递到另一个

如何在JavaFX 2中将ArrayList从一个场景传递到另一个场景?

如何在Django 2中将模板标签从一个模板传递到另一个模板

如何将滚轮或滚动事件从一个元素转移到另一个元素?

如何在相位器3中从一个场景到另一个场景传递数据?

如何在C#中将文件/文件路径从一个Button_Click事件传递到另一个事件?

jQuery Datatable-将值从一个“数据”元素传递到另一个

如何从一个SVG元素中的点绘制到另一个元素?

如何在Go中将服务指针从一个包传递到另一个包?

如何在python中将数据从一个文件传递到另一个文件?

如何在Powershell中将变量从一个If语句传递到另一个If语句?

如何在android Kotlin中将对象从一个活动传递到另一个活动?

如何在 AngularJS 中将数据从一个异步函数传递到另一个异步函数

如何在 Laravel 中将数据从一个视图传递到另一个视图?

如何在触发器中将值从一个查询传递到另一个查询

如何在bigquery中将列列表从一个表传递到另一个表

如何在 AngularJS 中将数据从一个视图传递到另一个视图

如何在 ReactJS 中将变量从一个页面传递到另一个页面?

如何在Django中将变量从一个视图传递到另一个视图

如何在JMeter中将变量从一个线程组传递到另一个线程组