Aktualisieren des SVG-Element Z-Index mit D3

Was ist ein effektiver Weg, um ein SVG-element an die Spitze der z-Reihenfolge, mit der D3-Bibliothek?

Meinem speziellen Szenario ist ein Kreisdiagramm, welches die highlights (durch hinzufügen einer stroke zu den path), wenn sich die Maus über einem bestimmten Stück. Der code-block für die Erzeugung, meine Grafik ist unter:

svg.selectAll("path")
    .data(d)
  .enter().append("path")
    .attr("d", arc)
    .attr("class", "arc")
    .attr("fill", function(d) { return color(d.name); })
    .attr("stroke", "#fff")
    .attr("stroke-width", 0)
    .on("mouseover", function(d) {
        d3.select(this)
            .attr("stroke-width", 2)
            .classed("top", true);
            //.style("z-index", 1);
    })
    .on("mouseout", function(d) {
        d3.select(this)
            .attr("stroke-width", 0)
            .classed("top", false);
            //.style("z-index", -1);
    });

Habe ich versucht, ein paar Möglichkeiten, aber kein Glück so weit. Mit style("z-index") und ruft classed beide haben nicht funktioniert.

Den "top" - Klasse wie folgt definiert ist in mein CSS:

.top {
    fill: red;
    z-index: 100;
}

Den fill Aussage ist es, sicherzustellen, dass ich wusste, es war ein-und ausschalten richtig. Es ist.

Ich habe gehört, mit sort ist eine option, aber ich bin unklar, wie es umgesetzt würde, um das "selektierte" element nach oben.

UPDATE:

Ich fest, meine Besondere situation mit dem folgenden code, fügt einen neuen Bogen zu den SVG auf die mouseover Ereignis zu zeigen, ein highlight.

svg.selectAll("path")
    .data(d)
  .enter().append("path")
    .attr("d", arc)
    .attr("class", "arc")
    .style("fill", function(d) { return color(d.name); })
    .style("stroke", "#fff")
    .style("stroke-width", 0)
    .on("mouseover", function(d) {
        svg.append("path")
          .attr("d", d3.select(this).attr("d"))
          .attr("id", "arcSelection")
          .style("fill", "none")
          .style("stroke", "#fff")
          .style("stroke-width", 2);
    })
    .on("mouseout", function(d) {
        d3.select("#arcSelection").remove();
    });

InformationsquelleAutor der Frage Evil Closet Monkey | 2012-11-27

Schreibe einen Kommentar