我有一个简单的强制网络图,我想使用ctrl-Click来导航到外部URL。请参阅JS Fiddle:
https://jsfiddle.net/NovasTaylor/o1qesn6k/
我在点击事件下使用d3.event.ctrlKey成功硬编码了所有节点的链接,如:
var nodes = svg.selectAll("g.node")
.data(dataset.nodes)
.enter()
.append("g")
.attr("class", "node")
.on("dblclick", dblclick)
.on("click", function () {
if (d3.event.ctrlKey) {
location.href = 'http://www.google.com';
}
})
.call(drag);
我想要使用为源数据中的每个节点指定的URL作为d.url(请参阅小提琴 - 该值可用于节点" B")。
我已经看过一些关于使用标签对此进行编码的参考文献,但无法获取点击事件来导航到网址。目标URL应在同一窗口中打开,替换强制网络图。
非常感谢您的协助。
干杯,
添
更新:Lars'建议,解决问题的代码是:
var nodes = svg.selectAll("g.node")
.data(dataset.nodes)
.enter()
.append("g")
.attr("class", "node")
.on("dblclick", dblclick)
.on("click", function (d) {
if (d3.event.ctrlKey) {
location.href = d.url;
}
})
答案 0 :(得分:4)
D3中几乎所有的回调函数都被赋予绑定到元素的数据作为参数。您可以在函数定义中引用它并动态设置值。在你的情况下,它将是
.on("click", function (d) {
if (d3.event.ctrlKey) {
location.href = d.url;
}