d3.js - 如何在呈现图表后为 dc.js 图表应用工具提示

标签 d3.js tooltip dc.js crossfilter

我有多个行图(crossfilter + dc),我想使用 d3-tip 自定义工具提示。

所以基本上相关的代码是:

rowtip = d3.tip()
    .attr('class', 'd3-tip')
    .offset([-10, 0])
    .html(function (d) { return d.key + ": "  + d.value; });

...my dc charts ...

... then at the bottom of my script tags ...

d3.selectAll('g.row').call(rowtip);
d3.selectAll('g.row').on('mouseover', rowtip.show);

该代码似乎有效,但鼠标悬停事件不会自动触发,并且在页面加载时不会显示工具提示。

但是如果我在控制台上运行最后一行(鼠标悬停),那么一切都会按预期进行。

enter image description here

所以我的问题是如何确保在页面加载时触发鼠标悬停事件。我试过 Jquery $(document).ready(....),但这没有用。

它必须与加载元素的顺序有关......我猜。但我不是 javascript 专家,更不用说 d3。

提前致谢。

最佳答案

你的方法很好,但这里是惯用的 dc.js 方法:

chart.on('pretransition.add-tip', function(chart) {
    chart.selectAll('g.row')
        .call(rowtip)
        .on('mouseover', rowtip.show)
        .on('mouseout', rowtip.hide);
});

pretransition event 在图表渲染或重绘后触发。 add-tip是一个事件命名空间,以避免干扰可能正在观看此事件的任何其他内容。

chart.selectAll 仅选择图表内的项目,以避免在页面其他地方出现意外的工具提示。

关于d3.js - 如何在呈现图表后为 dc.js 图表应用工具提示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41488521/

相关文章:

javascript - 将多个饼图链接到 dc.js 中的单个图例

javascript - 如何根据列值给DC js气泡图着色?

javascript - 如何使用 d3 js 从多个类名中选择单个类名?

javascript - 更新、退出、更新、进入带有转换的模式

html - 使用 Clipboard.js 在工具提示中单独显示消息

d3.js - 为什么刷机阻止dc.js barChart toolTips出现?

javascript - 插值错误

javascript - 更改 Canvas 大小时保留 svg 组的大小

r - 使用 shinyBS 为每个 pickerInput 选项添加不同的工具提示

html - 在 Bootstrap 工具提示中强制换行