我正在尝试添加指向此D3可视化文本元素的链接:
我希望能够点击“flare”,“analytics”并导航到另一个页面或点击矩形并执行正常操作,即扩展子树。
我尝试了一些不起作用的东西:
on
活动我尝试向on
元素添加svg:text
事件:
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
元素我尝试添加foreignObject
这样的元素:
nodeEnter.append("svg:foreignObject")
.style("float","right")
.attr("height", 100)
.attr("width", 100)
.append("div")
.html("<a href='#'>link</a>")
尽管它创建了链接,但它是一个额外的链接(不是矩形中的文本元素)。
xlink:href
属性最后,我还尝试了以下(在某些组合中):
<a xlink:href="/svg/index.html">
<text x="10" y="20">/svg/index.html</text>
</a>
但它也没有用。
有什么建议吗?
答案 0 :(得分:4)
我同意Matt的回答:指针事件......将其更改为css中的pointer-events: all
。
这就是我在力导向图中建立链接的方式:
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 ;-)
答案 1 :(得分:3)
.on('click', function () {})
只要你
指针事件似乎正在吸引人们,因为很多示例都有pointer-events: none
文本节点。