javascript - d3 过渡重叠导致奇怪的行为

标签 javascript d3.js filter transition

将鼠标悬停在以下 jsfiddle 中的一个节点上导致所有其他节点和链接淡出,除了连接到悬停节点的链接。

如果您将鼠标从一个节点缓慢移动到另一个节点,这将按预期工作。 但是,如果您将鼠标移动得太快,则连接到当前节点的链接将保持淡出状态。

为什么会这样?我的意图是始终让悬停节点和连接的链接可见。

.on("mouseover", function(d) { 
    svg.selectAll(".node").filter(function(other) { 
        return (other.name != d.name);
    }) 
    .transition()
    .duration(750)
    .style('opacity', 0.1);

    svg.selectAll(".link")
        .transition()
        .filter(function(other) {
            return (other.source.name != d.name) && (other.target.name != d.name);
        }) 
        .duration(750)
        .style('opacity', 0.1);
})

.on("mouseout", function(d){ 
    svg.selectAll(".node, .link")
        .transition()
        .duration(750)
        .style('opacity', 1.0);
});

最佳答案

罪魁祸首是调用 transition(),然后是 filter()。如果先filter,再触发transition,问题就没有了! link to jsfiddle

enter image description here

关于javascript - d3 过渡重叠导致奇怪的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23449087/

相关文章:

javascript - WebGL 几何着色器等效?

javascript - 如何在基于 d3 力的布局中为节点标签内的文本添加下划线?

javascript - 将过滤器属性传递给父组件

javascript - 了解 d3.js 源代码 : stuck at function. call() 和 "=+"

d3.js - 如何将标题行添加到 d3.csv 生成的表

javascript - ServiceNow 图表过滤

ruby-on-rails - ActiveAdmin:如何在过滤器中使用多选?

javascript - 在 Angular 服务中重用/重构代码

javascript - 如何在不实际聚焦元素的情况下触发焦点处理程序?

javascript - 如何将环境变量发送到 Jest CLI?