我按照这个例子在 d3.js 中实现了 HTML 工具提示,使用如下代码:
function onmouseover(d) {
$("#tooltip").fadeOut(100,function () {
// generate tooltip
$("#tooltip").fadeIn(100);
});
}
function onmouseout() {
$("#tooltip").fadeOut(250);
}
它可以工作,但会表现出一种行为,即如果鼠标在多个节点上快速移动,则工具提示可能会卡在页面上。上面的示例显示了相同的行为(快乐的摆动!)。
做了一些研究后,似乎nvd3使用dispatch很好地解决了这个问题。但是我不太清楚调度是如何工作的,基于这个问题,我想在这种情况下可能有一种更简单的方法。
更新
此问题仅由fadeIn 和fadeOut 引起。如果这些设置为零,则没有问题。所以问题实际上是是否可以设置它,以便在有另一个鼠标悬停/退出事件时中断淡入/淡出。
解析度
问题是只有一个工具提示。这在 JQuery 淡出过程中无法响应事件。答案是有多个工具提示,这样一个可以淡入而旧的淡出。这可以通过两种方式实现:
- jQuery 淡出
- CSS 过渡(NVD3使用的方法)