我有D3js热图图表是使用代码制作并对点击事件作出反应:
var heatMap = svg.selectAll(".hour")
.data(availPlain)
// abriged...
.on("click", function (d, i) {
// toggle special class for clicked item
d3.select(this).classed("selectedClass",
d3.select(this).classed("selectedClass") ? false : true);
var isShown=d3.select(this).classed("selectedClass");
});
点击处理程序中传递的参数 d 的外观如下:
{"g":"16","station":"91","rid":"360"}
本质上是availPlain数组或用于制作图形的对象的元素。 然而,我想迭代所有具有相同" g"的d3元素。它们的值和切换类也是如此。我很确定应该使用select / selectAll的一些后续操作,但是使用documentaion(https://github.com/mbostock/d3/wiki/Selections)来理解实际代码有点困难。那么,我如何"分类"所有具有数据条件的项目" data.g == something"?
答案 0 :(得分:0)
想出来:
.on("click", function (d, i) {
heatMap.filter(function(dta){return (dta.g==d.g);})
.classed("selectedClass",
d3.select(this).classed("selectedClass") ? false : true);
});
注意n#34;这个" in .classed和in事件处理函数表示不同的对象。