1

我是 D3 的新手,我被困在一个案子上。我有一个将圆圈添加到我的 svg 的按钮。

    d3.select("button#add").on("click", function()
    {
      svg.append('circle')
      .attr('class', 'little')
      .attr("cx", Math.random()*280+10)
      .attr("cy",Math.random()*280+10)
      .attr("r", 12);
    });

之后我想在你点击一个圆圈时改变颜色。由于某种原因,代码甚至没有启动事件。

d3.selectAll(".little").on('click', function()
    {
        d3.select(this).style("fill", "red");
    });
4

2 回答 2

1

这是一个FIDDLE来帮助你。

...
function paintCircle(d) {
    d3.select(this)
        .style("fill", "red");
};
于 2014-04-04T08:04:18.817 回答
0

问题在于:

d3.selectAll(".little").on('click', function() {
        d3.select(this).style("fill", "red");
});

只运行一次。但是当按钮点击创建一个新圆时,它创建它时没有添加 onclick 属性,并且由于上面的代码没有再次运行,新圆没有点击事件监听器。

要修复它,只需在创建圈子时添加 .on 部分,或者确保每次创建新圈子时都运行上述代码(我真的不建议这样做,除非你的回调函数每次都被更改时间)。

于 2017-05-31T21:31:50.870 回答