javascript - D3 - 在某些图层上禁用/重新启用鼠标悬停

标签 javascript d3.js

我对 D3 和 JavaScript 都是全新的,所以我什至不确定寻找问题答案的最佳方法。我目前正在尝试调整此 Interactive Scatter Plot/Legend到我自己的数据。我已经让它工作了,但我注意到一个问题——这在原来的版本中也是一个问题,虽然我一开始没有注意到它——是当图层被隐藏时,鼠标悬停提示仍然会触发不可见纽扣。

有没有一种方法可以调整代码,使隐藏层不仅不可见,而且也不再触发鼠标悬停事件,这样一旦上层覆盖,以前被上层覆盖的下层将可以通过鼠标悬停访问被隐藏了?

最佳答案

在该代码中做尽可能少的更改,只需在过滤器之前将 pointer-events 设置为 none 并在过滤器之后设置为 all过滤器:

legend.on("click", function(type) {
    d3.selectAll(".dot")
        .style("opacity", 0.0)
        .attr("pointer-events", "none")
        .filter(function(d) {
            return d["first_careunit"] == type;
        })
        .style("opacity", 1)
        .attr("pointer-events", "all")
        .style("stroke", "black")
});

当然,通过大的重构,有最好的方法来做到这一点。

这是更新的 bl.ocks:https://bl.ocks.org/GerardoFurtado/a2d323f9ef49e864ee589158b50cbaec/1d33bf045be6aeab83bb7c348354f1f10481f7b6

与您的问题无关,但从用户的 Angular 来看,您可以选择一个类别但之后不能取消选择(即查看全部)这一事实很烦人。

关于javascript - D3 - 在某些图层上禁用/重新启用鼠标悬停,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49933032/

相关文章:

json - Swift 节点树到复杂的 Json

javascript - Material ui 版本 4-11.4 的文档丢失

javascript - 使用 div 停止嵌入视频

javascript - 从javascript函数注入(inject)javascript资源

javascript - 如果选中复选框,则函数更新字符串或值

javascript - d3 : UI lags when mouse events attached to 1000 nodes

javascript - 如何配置 d3.js 的 x 轴并手动设置开始/结束时间

javascript - 使用 jQuery 使 DIV 在屏幕上居中

javascript - 如何从数字数组中过滤 ngRepeat 中的项目?

javascript - 如何使用 d3 及其力布局构建树?