【发布时间】:2017-08-02 00:24:05
【问题描述】:
我试图让一个简单的鼠标悬停在 d3 中的一些矩形上工作。如果我将 SVG 附加到“body”,一切正常(第一行代码)。如果我将选择更改为“.chart1”而不是“body”,则鼠标悬停不起作用。有人见过这个吗?
var chart = d3.select(".chart1").append("svg")
.attr("width", 250)
.attr("height", 50);
data = ["a", "b", "c",]
for(var i = 0; i < data.length; i++){
var rect = chart.append("rect")
.attr("x", 20*i)
.attr("y", 10)
.attr("width", 15)
.attr("height", 15)
chart.selectAll('rect')
.on("mouseover", function() {
d3.select(this)
.attr("opacity", .5)
})
.on("mouseout", function() {
d3.select(this)
.attr("opacity", 1)
});
【问题讨论】:
-
与您的问题无关,但您不需要使用 for 循环在 D3 代码中附加元素。这不是惯用的 D3。
-
是的,不确定我的堆栈中是否有某种类型的碰撞,但它在我的 jsfiddle 中不起作用:jsfiddle.net/jasonleehodges/um5f5ysv
-
再次:您的 sn-p 中的代码有效。由于指针事件,您的小提琴中的代码不起作用。将 SVG 附加到 body 或 div 之间绝对没有区别。我刚刚投票结束了这个问题。
标签: javascript d3.js svg