单击后清除 d3 中的不透明度

Clear opacity in d3 after click

        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。此代码现在不起作用。每当我单击新弧线时,之前单击的任何弧线的不透明度都会持续存在。

问题是您要将 path 元素附加到 g 元素并为其设置不透明度。所以在点击处理程序中,你必须再次 select 那些:

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