javascript - 如果从函数 (d) 设置,d3 鼠标悬停事件不会正确触发

标签 javascript d3.js visualization pie-chart

我正在制作一个饼图,它在鼠标悬停时有一个弹出动画,这是我从 Mike Bostocks 示例中复制的标准动画。它工作正常,但在我的情况下,我想在鼠标悬停事件期间更改饼图中心的文本。

代码可以在这里看到http://codepen.io/ObiEff/pen/KpzOEz

我已经尝试将事件更改为

.on("mouseover",function (d,i){

                arcTweenOut(radius,0); 
                d3.select("#costTitle")
                .text(data[i].label); 
                d3.select("#cost")
                .text("$"+data[i].value); 

            }) 

这样做确实可以使文本正确更改,但是不会弹出圆弧。我尝试了几种不同的方法来让它们都开火,但无法弄清楚。

如果不在鼠标悬停绑定(bind)中添加函数 (d),事件函数只会触发一次(在我的控制台中),那是在事件绑定(bind)时,但是当它通过函数 (d) 绑定(bind)时,它会在每次触发时触发鼠标悬停,但不执行动画。

最佳答案

它与 JavaScript 中的作用域有关,您可以阅读更多关于 here 的内容.我通过将文本更改放入 arcTweenOut 函数返回的函数中来使您的代码正常工作。 http://codepen.io/anon/pen/WvxeQw

        function arcTweenOut(outerRadius, delay)
    {   
        // Added parameters to accept what mouseover sends
        return function(a, index) {
          // Added code here to change text/title
            d3.select("#costTitle")
            .text(data[index].label); 
            d3.select("#cost")
            .text("$"+data[index].value); 
          // END NEW CODE
            d3.select(this).transition()
              .delay(delay)
              .attrTween("d",function(d,i) {
                 var i = d3.interpolate(d.outerRadius, outerRadius);
                 return function(t) {
                    d.outerRadius = i(t);
                    return arc(d); 
                };
            });
        };
    }

关于javascript - 如果从函数 (d) 设置,d3 鼠标悬停事件不会正确触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30264233/

相关文章:

python - 如何从 Vispy 中的屏幕坐标获取世界坐标

javascript - 使用 XMLHttpRequest 时如何处理 JavaScript 中的 "Access to restricted URI denied"错误?

javascript - 带点的正则表达式 Javascript 字母,不在开头或结尾

java - 在 java 中运行 d3 javascript

d3.js - 如何为 D3js 进行几个月/几天的本地化?

silverlight - 在 Silverlight 中显示大量项目的网格的最佳方式是什么?

javascript - 如何使用 jquery 创建阅读更多

javascript - 如何使用 jquery 将类添加到 bootstrap 表中的 td 标记

javascript - 从musicbrainz回归的乐队成员

algorithm - 开源光滑粒子流体动力学