0

好的,所以我有以下代码示例,其中我在 svg 元素中有圆圈。每个圆圈都有一个点击事件,我正在尝试为被点击的圆圈设置动画。目前所有圆圈都有动画,因为我指的是气泡对象。我想要的是引用单击的对象其自身而不是其他对象:

 var data_items=[100,200,300];

 var svg = d3.select("#chart")
        .append("svg").attr("width", 800).attr("height", 600);

 var g = svg.selectAll(".bubbleContainer")
      .data(data_items)
      .enter().append("g")
      .attr("class","bubbleContainer");

 var bubble = g.append("circle")
       .attr("class","bubble")
       .attr("cx", function(d) {
              return d;
       })
       .attr("cy", function(d) { 
         return d
        })
       .attr("r", function(d) {
            return d/2
        })
        .on("click",function(d){
        bubble
        .transition()
        .duration(1000)
        .attr("r",1000)
    })

非常感谢任何帮助
谢谢!

4

2 回答 2

1

您可以使用d3.event.target来访问在事件处理程序中被单击的元素。参见例如这个 jsfiddle

于 2012-12-05T21:09:59.493 回答
1

Lars Kotthoff 写的东西会起作用。或者——我不确定哪个更惯用:

在点击处理程序中,this上下文引用了被点击的 DOM 元素。

所以以下也可以做到:

.on("click",function(d){
  d3.select(this)
    .transition()
    .duration(1000)
    .attr("r",1000)
});
于 2012-12-05T21:14:59.140 回答