【问题标题】:animate this element in d3js在 d3js 中为这个元素设置动画
【发布时间】:2013-08-01 04:02:42
【问题描述】:

好的,所以我有以下代码示例,其中我在 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)
    })

非常感谢任何帮助
谢谢!

【问题讨论】:

    标签: javascript d3.js


    【解决方案1】:

    Lars Kotthoff 写的内容会奏效。或者——我不确定哪个更惯用:

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

    所以以下也可以:

    .on("click",function(d){
      d3.select(this)
        .transition()
        .duration(1000)
        .attr("r",1000)
    });
    

    【讨论】:

    • 遇见你就是男人!那是你帮助我解决d3问题的两次。感谢百万人
    • :) 我很高兴。实际上,第一次我并没有给你一个完整的答案,但无论如何,我喜欢你的地图项目(看到你写的关于从自然地球导出 geojson 数据的博客文章)。
    【解决方案2】:

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

    【讨论】:

    • 哇!我希望您不是为了这个问题而对整个示例进行的。顺便说一句,这太棒了,谢谢,是的,这也有效
    猜你喜欢
    • 2015-03-27
    • 2015-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多