2015-02-06 23 views
0
 var arcs = vis.selectAll("g.slice").data(pie).enter().append("svg:g").attr("class",      "slice"); 

     arcs.append("svg:path") 
      .on("click", function(d) {//clicking on individual arcs 
       arcs.style("opacity", 1); 
       d3.select(this).style("opacity", 0.7); 

所以我有一個餅圖,當我點擊一個單獨的弧時,其不透明度將下降到0.7。但是,當我點擊另一個弧時,我希望不透明度回到1。此代碼現在不起作用。每當我點擊新的弧線時,任何之前點擊的弧線的不透明度都會持續存在。點擊後清除D3中的不透明度

+0

在您單擊處理程序,更換'和'vis.selectAll( 「g.slice」)'arcs'。 – 2015-02-06 22:55:30

+0

嗯,仍然無法正常工作,以前的弧線點擊仍然不透明度爲0.7。不透明度仍然不會重置爲1. – 2015-02-06 23:12:24

+0

製作該'arcs.selectAll(「路徑」)'。 – 2015-02-06 23:18:23

回答

0

問題是您正在爲g元素添加path元素並在其上設置不透明度。因此,在單擊處理程序,您必須再次選擇那些:

.on("click", function(d) { 
      arcs.selectAll("path").style("opacity", 1); 
      d3.select(this).style("opacity", 0.7); 
})