D3中断退出转换

时间:2014-06-23 16:27:25

标签: javascript css d3.js

我有一个带有标记链接的D3力布局网络,如this one。我已对它进行了扩展,因此现有的链接标签具有淡出效果。标签的退出代码如下所示:

$linkLabel.exit()
   .classed('fadeout', true)
   .transition()
   .delay(250)
   .remove();

现在标签可以在仍然淡入/退出时重新进入布局(例如,当在同一节点上发生快速连续鼠标悬停和鼠标移出事件时)。不管怎样,会发生相应的标签,因为事件流程类似于exit() - > transition() - > delay() - > enter() - > remove()

我需要做的是中断重新进入布局的标签的转换,以便不为它们调用remove()函数。你知道如何做到这一点吗?

1 个答案:

答案 0 :(得分:1)

通过准备example我实际上找到了一个可能的解决方案。如果我在每次更新之前删除所有当前淡出/退出的标签,它会起作用:

 $svg.selectAll('.link-label.fadeout').remove();

请参阅modified fiddle(在updateLinkLabels()函数中)。也许你知道一个更优雅的解决方案?