我有一个带有标记链接的D3力布局网络,如this one。我已对它进行了扩展,因此现有的链接标签具有淡出效果。标签的退出代码如下所示:
$linkLabel.exit()
.classed('fadeout', true)
.transition()
.delay(250)
.remove();
现在标签可以在仍然淡入/退出时重新进入布局(例如,当在同一节点上发生快速连续鼠标悬停和鼠标移出事件时)。不管怎样,会发生相应的标签,因为事件流程类似于exit()
- > transition()
- > delay()
- > enter()
- > remove()
。
我需要做的是中断重新进入布局的标签的转换,以便不为它们调用remove()
函数。你知道如何做到这一点吗?
答案 0 :(得分:1)
通过准备example我实际上找到了一个可能的解决方案。如果我在每次更新之前删除所有当前淡出/退出的标签,它会起作用:
$svg.selectAll('.link-label.fadeout').remove();
请参阅modified fiddle(在updateLinkLabels()
函数中)。也许你知道一个更优雅的解决方案?