D3选择全部改变颜色

时间:2014-04-04 07:27:51

标签: d3.js click selectall

我是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");
    });

2 个答案:

答案 0 :(得分:1)

这是一个FIDDLE来帮助你。

...
function paintCircle(d) {
    d3.select(this)
        .style("fill", "red");
};

答案 1 :(得分:0)

问题在于:

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

只运行一次。但是当按钮单击创建一个新圆圈时,它会在不添加onclick属性的情况下创建它,并且由于上面的代码不再运行,因此新圆圈没有用于单击的事件侦听器。

要解决此问题,只需在创建圈子时添加.on部分,或确保每次制作新圈子时都运行上述代码(我不建议您这样做,除非您的回调功能每次都在改变。)