javascript - DC.JS 在点击时选择一个栏

标签 javascript d3.js dc.js

我试图在用户单击特定条形图时调用条形图上的函数。我意识到我需要使用 renderlet 将监听器添加到渲染函数,然后从那里创建每个栏的分组,将添加一个点击事件。

假设使用任何通用条形图,我将其称为:

barChart.on('renderlet', function(chart, filter)
{
    // TODO Select the bars here and add an on click function
});

唯一的问题是我无法找到如何使用该图表对象在柱上执行 d3.select 调用。当我将它转出时,我没有在对象中看到任何类似条形的东西。

最佳答案

这种东西,最简单的办法就是追根溯源。在这种情况下,

    var enter = bars.enter()
        .append('rect')
        .attr('class', 'bar')

https://github.com/dc-js/dc.js/blob/develop/src/bar-chart.js#L90-L92

所以选择器是rect.bar。此外,便捷方法 chart.selectAll() 比直接使用 d3 更好,因为它只会在当前图表内进行选择。

最后,为了避免踩踏 dc.js 内部使用的事件,您可能需要为事件处理程序命名空间。

加起来,

barChart.on('renderlet.barclicker', function(chart, filter)
{
    chart.selectAll('rect.bar').on('click.custom', function(d) {
        // use the data in d to take the right action
    });
});

关于javascript - DC.JS 在点击时选择一个栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29214345/

相关文章:

javascript - 如何在 CSS 中创建具有渐变不透明度的边框?

javascript - 调整窗口大小时的 d3 缩放行为

javascript - 将网络图与 dc.js/crossfilter.js 集成

javascript - DC.js 图表中的初始范围选择

javascript - 我们应该如何命名否定条件的谓词?

javascript - 前端开发人员面试编码问题 : a not defined and b is defined?

javascript - TinyMCE 不在控制台中输出文本

javascript - D3.js:如何为网格的顶部和右侧线提供与网格线相同样式的相同样式?

javascript - 转换 svg :image to grayscale on click using d3

javascript - 服务器端 Crossfilter : replicate filterfunction. 如何从函数闭包访问变量