mercredi 28 janvier 2015

In D3 How to enable mouse over event for current particular path?

I was creating a world map using d3.js.In that map i need to bind the mouseover event for every country.


For example: If i mouseover the india i need to change the Fill(Background) color for india only.


I implemented the mouseover event.But my problem is whenever i mouseover over the country(India) that function effecting all the countries.I mean fill color effecting all the countries.But it need to effect only current country.


I tried using this also but no luck for me.



.on("mouseover", function(){d3.select(this).style("fill", "aliceblue");})


Please help any one to solve my problem.


My Full Code



var width = 1000,
height = 500;

var projection = d3.geo.robinson()
.scale(150)
//.translate(100,100)
.precision(.5);

var path = d3.geo.path()
// .attr("class","path")
.projection(projection);

var svg = d3.select('#'+id)
.append('svg')
.attr("width", width)
.attr("height", height)
.attr("style", "background:" + json.bc);


//shape
d3.json("world.json", function(error, world) {

svg
.datum(topojson.feature(world, world.objects.countries))
.append("path")
.on("mouseover", function(){d3.select(this).style("fill", "red");})
.on("mouseout", function(){d3.select(this).style("fill", "white");})
.attr("style", "fill:" + json.cbc)
.attr("class", "country")
.attr("d", path)

;
});


Before mouseover


Before MouseOver


After MouseOver


After mouseOver


Aucun commentaire:

Enregistrer un commentaire