d3可折叠树:如何仅为点击节点的标签着色?

时间:2016-06-16 19:26:47

标签: javascript d3.js

我正在开发可折叠树形图(http://bl.ocks.org/mbostock/4339083)。 我会改变与点击节点相关的标签颜色。 我修改了代码

    // Toggle children on click.
  function click(d) {
  if (d.children) {
    d._children = d.children;
    d.children = null;
  } else {
    d.children = d._children;
    d._children = null;
  }
  update(d);
  }

宽度

    // Toggle children on click.
  function click(d) {
  if (d.children) {
    d._children = d.children;
    d.children = null;
  } else {
    d.children = d._children;
    d._children = null;
  }
  d3.select(this).select("text")
   .style("fill", "red")
  update(d);
  }

但我不知道如何记住之前点击的节点,将其标签恢复为黑色。

现在,如果我点击一个节点,标签文字会变成红色,所以其他任何一个点击。我希望红色只有最后一个。可以有人帮我做吗?

1 个答案:

答案 0 :(得分:0)

一个简单的解决方案是着色所有文本,然后着色所单击节点的文本:

d3.selectAll("text")
     .style("fill", "black");

d3.select(this).select("text")
    .style("fill", "red");

检查小提琴:http://jsfiddle.net/gerardofurtado/f6xmzjbr/