Javascript d3.js中的HTML工具提示清理
我已经在d3.js中实现了以下HTML工具提示,代码如下:Javascript d3.js中的HTML工具提示清理,javascript,jquery,tooltip,d3.js,Javascript,Jquery,Tooltip,D3.js,我已经在d3.js中实现了以下HTML工具提示,代码如下: function onmouseover(d) { $("#tooltip").fadeOut(100,function () { // generate tooltip $("#tooltip").fadeIn(100); }); } function onmouseout() { $("#tooltip").fadeOut(250); } 它可以工作,但是如果鼠标在多个节点
function onmouseover(d) {
$("#tooltip").fadeOut(100,function () {
// generate tooltip
$("#tooltip").fadeIn(100);
});
}
function onmouseout() {
$("#tooltip").fadeOut(250);
}
它可以工作,但是如果鼠标在多个节点上快速移动,工具提示可能会停留在页面上。它们表现出同样的行为(高兴地扭动!)
做了一些研究后,似乎已经很好地解决了这个问题。然而,我不太清楚调度是如何工作的,根据我的想象,在这种情况下可能有一种更简单的方法
更新
此问题仅因fadeIn和fadeOut而出现。如果这些设置为零,则没有问题。所以问题是,是否有可能设置它,以便在出现另一个mouseover/out事件时,fadeIn/out被中断
分辨率
问题是只有一个工具提示。在JQuery FAUDUT的中间,这不能对事件作出响应。答案是有多个工具提示,这样一个可以淡入,而旧的则淡出。这可以通过两种方式实现:
- JQuery淡出
- CSS转换(用户使用的转换)
您还可以研究为可靠捕获
mouseout
事件而建议的一些解决方法:我会尝试使用mousemove
事件来代替它(但它通常会被拒绝),并将fadeOut
移动到svg的mousemove
。尽管如此,即使鼠标位于元素内部,后者也会触发。如果鼠标位于每个节点的鼠标上方和鼠标移出,svg上的鼠标移出会触发淡出,如果鼠标位于节点内部,则会触发淡出。我担心的是,如果在淡出过程中发生另一个事件(即,如果鼠标移动到新节点上),会发生什么情况。我的图表中可能有很多节点靠得很近,我开始认为可能淡出是不值得的。更新:你可以尝试在你的onmouseover
的开头添加0延迟的“淡出”。据我所知,dispatch
不是nvd3解决方案的核心。相反,每次在任何节点上出现鼠标移出事件时,它们也会在此处第78行调用cleanup
方法来清除死掉的工具提示:。