如何更改此 d3.js 树中祖先文本的样式 class 和内容?

How can I change style class & content of text for ancestors in this d3.js tree?

这是 this question 的后续。 (感谢西里尔的帮助!!)

我的问题有点棘手,我仍然需要一些帮助。 当用户单击任何节点的文本元素时,我希望发生以下情况:

我已按照 Cyril 的建议将 parent 项添加到表示 collapse() 中的数据的对象中。所以我可以遍历到 root 的路径。但是,当我遍历这条路径时,我无法获取文本的 d3.js 元素。我怎样才能做到这一点?这样一来,上面的操作对我来说就比较简单了。

下面是我想要的示例。当用户点击Visualizations时,vizflare应该变成vizXflareX。他们的样式 classes 应该从 class1 切换到 class2。点击 vizXflareX 文本应该没有效果。 并且不应以任何方式更新其他节点。

我该怎么做?我需要能够在遍历树时抓取 d3.js 个绘图元素。

从点击的节点向上遍历,到父根。

您还可以获取数据的 DOM 元素(包含圆圈和文本的组),如下面的函数所示。

function findNode(text){
  var DOM = d3.selectAll(".node")[0].find(function(node){
    return (d3.select(node).data()[0].name == text);
  })
  return DOM;
}

现在,只要您拥有数据并且想要找到它关联的组。

你可以利用上面的函数调用

  var k = findNode("physics");//this will return the DOM which has the node physics.

希望对您有所帮助!