Ich fand die Antwort. Das Hauptproblem ist, dass D3 keine explizite Funktion trigger
wie jQuery hat. Sie können es jedoch simulieren.
Sagen Sie bitte einen D3 Weg über
d3.json("us-counties.json", function(json){
thisObj._svg.selectAll("path")
.data(json.features)
.enter().append("path")
.attr("d", thisObj._path)
.attr("class", "states")
.attr("id", function(d){
return d.id; //<-- Sets the ID of this county to the path
})
.style("fill", "gray")
.style("stroke", "black")
.style("stroke-width", "0.5px")
.on("dblclick", mapZoom)
.on("mouseover", mapMouseOver)
.on("mouseout", mapMouseOut);
});
und ein Mouseover-Event-Handler gebaut haben, die die Füll- und Strichfarben
var mapMouseOver(d){
d3.selectAll($("#" + d.id))
.style("fill", "red")
.style("stroke", "blue");
}
Typischerweise
zu verwenden, um
d3.select(this)...
, die meisten Tutorials sagen ändert
aber tatsächlich funktioniert der Wert auch. Wenn Sie einen Ereignishandler haben, dass Sie die ID des Knotens wird, und lösen sie über
$("#someDropdownSelect").change(someEventHandler)
function someEventHandler(){
//get node ID value, sample
var key = $(this)
.children(":selected")
.val();
//trigger mouseover event handler
mapMouseOver({id : key});
}
das Mouseover-Ereignis ausführen basierend auf einem Drop-Down-Auswahl
Das funktioniert perfekt. –