有几种方法可以实现你想要的,但我相信下面的解决方案既简单又高效。
我将从一个与您的类似的示例开始,也没有任何超链接:
link to jsfiddle - starting point,
并将引导您完成所有必要但简单的修改。
首先,让我们为我们希望将标签作为超链接的节点添加字段“url”:
{
"children": [{
"name": "AgglomerativeCluster",
"size": 3938,
"url": "http://www.example.com/"
}, {
"name": "CommunityStructure",
"size": 3812,
"url": "http://www.example.com/"
}, {
"name": "HierarchicalCluster",
"size": 6714,
"url": "http://www.example.com/"
}, {
"name": "MergeEdge",
"size": 743,
"url": "http://www.example.com/"
}
现在,让我们编写代码来选择节点数据包含字段“url”中任何内容的所有标签,并为每个此类标签添加适当的时钟处理程序,以打开对应的 url:(它还为鼠标悬停设置不同的光标指针,以便用户知道标签实际上是一个超链接)
d3.selectAll(".node text")
.filter(function(d){ return d.url; })
.style("cursor", "pointer")
.on("click", function(d){
document.location.href = d.url;
});
就是这样!
link to jsfiddle - finished example