我试图单击显示/隐藏D3中节点的文本.我尝试使用以下代码:
var node = svg.selectAll(".node")
.data(json.nodes)
(...)
node.on("click", function() {
if (textShowing) {
node.select("text").style("visibility", "hidden");
} else {
node.select("text").style("visibility", "visible");
}
textShowing = !textShowing;
});
该代码将导致所有节点的text属性在单击任何一个节点时显示/消失.
如何影响仅单击节点的text属性?
解决方法:
节点是包含所有组的选择(我想它们是组,因为您没有复制/粘贴整个选择).
如果只想在被单击的组中执行任何操作,则必须使用d3.select(this)进行选择,它会选择当前(在您的情况下为被单击的)DOM元素.
因此,代替:
node.select("text")
它应该是:
d3.select(this).select("text")
标签:d3-js,javascript
来源: https://codeday.me/bug/20191111/2019278.html