我有一个强制导向的图形,当我点击线条时想改变2个节点之间的一条线的颜色。但是,以下代码会更改所有行的颜色,而不仅仅是我单击的那一行。d3 javascript点击一行来改变线条颜色 - 改变所有线条
我对线路和点击在线CSS是:
var path = svg.append("g").selectAll("path")
.data(force.links())
.enter().append("path")
.attr("class", function(d) { return "link " + d.type; })
.attr("marker-end", function(d) { return "url(#" + d.type + ")"; })
.on("click", function(d) { edge_clicked(d); });
function edge_clicked(d) {
d3.select("path").classed("link--clicked", false); //remove color class of any previously clicked link
var clicked = d3.select(this); //select clicked element
path.classed("link--clicked", true); //set class of clicked link
}
我怀疑它与我是怎么做的:
.link {
fill: none;
stroke: #666;
stroke-width: 2px;
cursor: pointer;
}
.link--clicked {
fill: none;
stroke: red;
stroke-width: 2px;
cursor: pointer;
}
我上线点击使用时调用一个函数调用path.classed命令会影响所有路径/行,而不仅仅是点击行。但是,我无法弄清所选行的语法。
任何帮助表示赞赏。
谢谢。工作完美。我很欣赏关于范围和selectAll的详细信息。 – JeffA