图例 Click 事件在迭代后不起作用
legends Click event not working after iteration
我遇到了 dimple.js 的问题。我创建了一个堆叠图表,我想将一个点击事件绑定到该图表的每个图例中。如果页面重新加载然后它工作正常,但是当我通过函数调用更改图表数据的那一刻,它可以流畅地更改图表内容但图例单击功能不再起作用。
请帮忙解决这个问题。
Note: I don't want to use the Jquery click handler function. I used the dimple Js selector. Below is the code which I have used also I have attached a fiddle link for the same.
Fiddle Link
var svg = dimple.newSvg("#chartContainer", 590, 400);
var data = [
{ Animal: "Cats", Value: (Math.random() * 1000000) },
{ Animal: "Dogs", Value: (Math.random() * 1000000) },
{ Animal: "Mice", Value: (Math.random() * 1000000) },
{ Animal: "Rat", Value: (Math.random() * 1000000) },
{ Animal: "Cow", Value: (Math.random() * 1000000) }
];
var myChart = new dimple.chart(svg, data);
myChart.setBounds(60, 30, 510, 305)
var x = myChart.addCategoryAxis("x", "Animal");
x.addOrderRule(["Cats", "Dogs", "Mice"]);
myChart.addMeasureAxis("y", "Value");
myChart.addSeries("Animal", dimple.plot.bar);
myChart.addLegend(30, 100, 60, 300, "left");
myChart.draw();
svg.selectAll("rect").on("click",function(){
console.log("Hello");
});
//svg.selectAll("g rect.legendKey").on("click",function(){
// console.log("Hello");
//});
d3.select("#btn").on("click", function() {
myChart.data = [
{ Animal: "Cats", Value: (Math.random() * 1000000) },
{ Animal: "Dogs", Value: (Math.random() * 1000000) },
{ Animal: "Mice", Value: (Math.random() * 1000000) }
];
myChart.draw(1000);
});
在您的按钮点击处理程序中,您必须将图例点击处理程序绑定到 myChart.draw(1000);
之后的新图例
function legendClick(){
console.log("Hello");
}
d3.select("#btn").on("click", function() {
myChart.data = [
{ Animal: "Cats", Value: (Math.random() * 1000000) },
{ Animal: "Dogs", Value: (Math.random() * 1000000) },
{ Animal: "Mice", Value: (Math.random() * 1000000) }
];
myChart.draw(1000);
svg.selectAll(".legendKey").on("click", legendClick);
});
我遇到了 dimple.js 的问题。我创建了一个堆叠图表,我想将一个点击事件绑定到该图表的每个图例中。如果页面重新加载然后它工作正常,但是当我通过函数调用更改图表数据的那一刻,它可以流畅地更改图表内容但图例单击功能不再起作用。 请帮忙解决这个问题。
Note: I don't want to use the Jquery click handler function. I used the dimple Js selector. Below is the code which I have used also I have attached a fiddle link for the same. Fiddle Link
var svg = dimple.newSvg("#chartContainer", 590, 400);
var data = [
{ Animal: "Cats", Value: (Math.random() * 1000000) },
{ Animal: "Dogs", Value: (Math.random() * 1000000) },
{ Animal: "Mice", Value: (Math.random() * 1000000) },
{ Animal: "Rat", Value: (Math.random() * 1000000) },
{ Animal: "Cow", Value: (Math.random() * 1000000) }
];
var myChart = new dimple.chart(svg, data);
myChart.setBounds(60, 30, 510, 305)
var x = myChart.addCategoryAxis("x", "Animal");
x.addOrderRule(["Cats", "Dogs", "Mice"]);
myChart.addMeasureAxis("y", "Value");
myChart.addSeries("Animal", dimple.plot.bar);
myChart.addLegend(30, 100, 60, 300, "left");
myChart.draw();
svg.selectAll("rect").on("click",function(){
console.log("Hello");
});
//svg.selectAll("g rect.legendKey").on("click",function(){
// console.log("Hello");
//});
d3.select("#btn").on("click", function() {
myChart.data = [
{ Animal: "Cats", Value: (Math.random() * 1000000) },
{ Animal: "Dogs", Value: (Math.random() * 1000000) },
{ Animal: "Mice", Value: (Math.random() * 1000000) }
];
myChart.draw(1000);
});
在您的按钮点击处理程序中,您必须将图例点击处理程序绑定到 myChart.draw(1000);
function legendClick(){
console.log("Hello");
}
d3.select("#btn").on("click", function() {
myChart.data = [
{ Animal: "Cats", Value: (Math.random() * 1000000) },
{ Animal: "Dogs", Value: (Math.random() * 1000000) },
{ Animal: "Mice", Value: (Math.random() * 1000000) }
];
myChart.draw(1000);
svg.selectAll(".legendKey").on("click", legendClick);
});