Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在D3可视化中包含链接';什么是文本元素?_Javascript_Svg_D3.js - Fatal编程技术网

Javascript 如何在D3可视化中包含链接';什么是文本元素?

Javascript 如何在D3可视化中包含链接';什么是文本元素?,javascript,svg,d3.js,Javascript,Svg,D3.js,我试图添加一个链接到D3可视化的文本元素: 我希望能够点击“flare”,“analytics”并导航到另一个页面,或者点击矩形并执行正常操作,即展开子树 我尝试了一些无效的方法: 开启事件 我试图在svg:text元素中添加on事件: nodeEnter.append("svg:text") .attr("dy", 3.5) .attr("dx", 5.5) .text(function(d) { return d.name; }) .on("click",functio

我试图添加一个链接到D3可视化的文本元素:

我希望能够点击“flare”,“analytics”并导航到另一个页面,或者点击矩形并执行正常操作,即展开子树

我尝试了一些无效的方法:

  • 开启
    事件
我试图在
svg:text
元素中添加
on
事件:

nodeEnter.append("svg:text")
  .attr("dy", 3.5)
  .attr("dx", 5.5)
  .text(function(d) { return d.name; })
  .on("click",function(d,i) { alert("Clicked on the text");});
  • 外来对象
    元素
我尝试添加
foreignObject
元素,如下所示:

 nodeEnter.append("svg:foreignObject")
  .style("float","right")
  .attr("height", 100)
  .attr("width", 100)
  .append("div")
  .html("<a href='#'>link</a>")
但它也不起作用

有什么建议吗?

。在('click',函数(){})
上,只要您愿意,它就可以工作

  • 选择了正确的节点
  • 尚未使用css禁用文本元素上的指针事件

指针事件似乎吸引了人们的注意力,因为相当多的示例都有
指针事件:文本节点没有

我同意Matt关于:指针事件的回答。。。将此更改为css中的
指针事件:所有

这就是我在力定向图中建立链接的方式:

svg = d3.select("body").append("svg");

svg.selectAll(".node")
  .append("svg:a").attr("xlink:href", function(d){ return "generic.php?url=" + d.url })
  .append("svg:text")
  .text(function(d) { return d.name; })
  .attr("dy", 3.5)
  .attr("dx", 5.5)
  .attr("text-anchor", "middle");
  //The End ;-)

只要a)选择了正确的节点,b)没有用css禁用文本元素上的指针事件,on('click'函数(){})就可以工作。哦,没错!文本节点确实有
指针事件:无,它正在阻止该操作。谢谢你介意加上一个答案吗?这样我就可以把它标为正确了?
svg = d3.select("body").append("svg");

svg.selectAll(".node")
  .append("svg:a").attr("xlink:href", function(d){ return "generic.php?url=" + d.url })
  .append("svg:text")
  .text(function(d) { return d.name; })
  .attr("dy", 3.5)
  .attr("dx", 5.5)
  .attr("text-anchor", "middle");
  //The End ;-)