我有一個強制導向的圖形,當我點擊線條時想改變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