我在javascript /瓶初学者,我试图用这个实验D3树状图例如:https://bl.ocks.org/mbostock/4063570获得给定节点的父节点D3树状图
什么我试图得到的是,当一个节点被单击,将父节点返回到应用服务器。
例如:如果我display
节点上单击,然后服务器获取“flare,display
”
如果点击cluster
节点,则服务器获取“flare,analytics,cluster
”
我在javascript /瓶初学者,我试图用这个实验D3树状图例如:https://bl.ocks.org/mbostock/4063570获得给定节点的父节点D3树状图
什么我试图得到的是,当一个节点被单击,将父节点返回到应用服务器。
例如:如果我display
节点上单击,然后服务器获取“flare,display
”
如果点击cluster
节点,则服务器获取“flare,analytics,cluster
”
我t很容易得到被点击的节点的父母。只要使用ancestors()
,其中:
返回祖先节点的数组,从与该节点,则随后每个父到根。
所以,你的情况......
node.on("click", function(d){
console.log(d.ancestors())
});
..将显示在控制台中的所有祖先,作为数组。
这里是分叉bl.ocks:https://bl.ocks.org/anonymous/e36d4af364642a70818987941aa192c8/c75e620e662a6899d8df34c287fc5ea00d049513
在该代码中,我映射阵列来获得每个节点的id
财产。
您可以通过点击数据递归:
var node = g.selectAll(".node")
.data(root.descendants())
.enter().append("g")
.attr("class", function(d) { return "node" + (d.children ? " node--internal" : " node--leaf"); })
.attr("transform", function(d) { return "translate(" + d.y + "," + d.x + ")"; })
//attach a click listener to the group
.on("click", function(d){
var children = [];
//recursively call parent
var recurse = function(c){
//recurse unless no parent is found
if (c.parent){
children.push(c.parent.id);
recurse(c.parent)
}
}
recurse(d)//call recurse on clicked node
console.log(children)
//send children to server via AJAX
})
工作示例here
如果我正确地理解了这个问题,对于本例和其他人使用相同的方法创建的,datum属性'id'保存父节点名,'display'具有'flare.display'的id。所以你只需要用逗号替换句点,并使用点击事件来获取相关的ID并触发你需要的任何内容:https://bl.ocks.org/Andrew-Reid/raw/4358ca9989902fae71cf91b38dc4de56/ –