Javascript nvd3多条形图-图例单击事件

Javascript nvd3多条形图-图例单击事件,javascript,d3.js,nvd3.js,Javascript,D3.js,Nvd3.js,我有一个带图例的堆叠多柱状图 当您通过图例禁用所有项目时,所有项目都将再次启用。我想防止这种情况发生,并且只在用户单击某个项目时启用它们 我一直在查看图表源(下面的链接),但找不到再次启用所有项目的位置。我在想也许我可以覆盖legendClick分派函数,但这似乎没有在我自己的JS中注册(下面是fiddle) 如何控制图例单击时启用/禁用的内容 更新:2017年1月3日 我在代码nv.d3.js文件中发现了一个区域,它将所有系列设置回启用状态。如何为图表的特定实例重写此行为,而不是更改源中的

我有一个带图例的堆叠多柱状图

当您通过图例禁用所有项目时,所有项目都将再次启用。我想防止这种情况发生,并且只在用户单击某个项目时启用它们

我一直在查看图表源(下面的链接),但找不到再次启用所有项目的位置。我在想也许我可以覆盖legendClick分派函数,但这似乎没有在我自己的JS中注册(下面是fiddle)

如何控制图例单击时启用/禁用的内容

更新:2017年1月3日

我在代码nv.d3.js文件中发现了一个区域,它将所有系列设置回启用状态。如何为图表的特定实例重写此行为,而不是更改源中的默认行为

//the default behavior of NVD3 legends is, if every single series
// is disabled, turn all series' back on.
data.forEach(function(series) { series.disabled = false});

legendClick事件的正确处理程序必须以以下方式编写:

chart.legend.dispatch.on('legendClick', function(d,i) {
    var dt = d3.select('#chart svg').datum();   // <-- all data
    console.log("legendClick", sel_data, idx_data, dt);

    // here you can do what you need
});
chart.legend.dispatch.on('legendClick',函数(d,i){

var dt=d3.select(“#chart svg”).datum();//谢谢你的回答。我用一些最新的发现更新了我的原始问题。似乎默认行为是在取消选择所有系列后启用所有系列。如何仅为一个图表实例重写此行为?
chart.legend.dispatch.on('legendClick', function(d,i) {
    var dt = d3.select('#chart svg').datum();   // <-- all data
    console.log("legendClick", sel_data, idx_data, dt);

    // here you can do what you need
});