d3 中具有不同翻转操作的多个多边形
Multiple polygons with different roll over actions in d3
我正在尝试将几个多边形变成d3中的按钮。我需要每个多边形都有不同的翻转/展开/单击操作。我画这样的多边形:
poly = [coordinates];
poly2 = [coordinates];
//drawing polygons
chart.selectAll("polygon")
.data([poly, poly2])
.enter().append("polygon")
.attr(... //attributes go here
//I add functionality below
.on("mouseover", function (d) {
chart.selectAll("polygon")
.attr("fill","orange");
})
.on("mouseout" , function (d) {
chart.selectAll("polygon")
.attr("fill","steelblue");
});
这适用于所有"在鼠标上..."对所有多边形的影响。分配不同的"在鼠标上"的最佳方法是什么?对每个多边形的操作?例如,我希望poly
鼠标悬停时将颜色切换为orange
,但poly2
鼠标悬停时red
。这是我对多边形"按钮"的小提琴,但我只能将相同的操作分配给那里的两个多边形。
我的方法是在数据中设置悬停颜色:
像这样:
poly2 = {
color: "green",//mouse hover color
points: [{
"x": 71,
"y": 1.5
}, {
"x": 75,
"y": 0
}, {
"x": 79,
"y": 1.5
}, {
"x": 75.5,
"y": 1.1
}, {
"x": 75.5,
"y": 1.7
}, {
"x": 74.5,
"y": 1.7
}, {
"x": 74.5,
"y": 1.1
}]
};
接下来鼠标悬停,而不是像这样选择所有多边形:
chart.selectAll("polygon")
.attr("fill","orange");
选择触发它的那个并从数据中设置填充颜色(检查上面的悬停颜色是否在数据中传递):
d3.select(this)
.attr("fill", d.color);//fill color from the data defining the polygon.
此处的工作代码
您可以执行此类操作的一种方法是根据其索引将类分配给每个多边形:
.attr("class", function(d, i) {return i})
d 是数据,i 是索引,因此我们返回每个多边形的索引作为类。这使我们能够做这样的事情:
.attr("fill", function(d, i) { return (i === 0) ? "steelblue" : "red";})
所以像这样的东西在你所拥有的:https://jsfiddle.net/szjn7u1v/3/。
相关文章:
- 如何使jQuery插件函数可调用以供独立使用,而不在集合上操作
- Jquery菜单操作不稳定,定位不正确,存在一般错误
- 如何确定javascript已经完成了某些操作.ios上的
- 防止Alt+Shift默认操作或检测多种操作系统语言的Javascript
- 从JavaScript访问struts操作中的属性
- fluxxor向一个flux实例添加一组以上的操作
- Jquery表单验证插件-如果选中复选框,如何在提交时执行某些操作
- 操作放置在画布上的元素之间的连接
- 使用“+="操作人员
- Rails操作只调用一次,但我在ajax中每秒钟都调用一次
- Jquery未定义函数正在停止其他操作
- SVG/JavaScript:尝试选择和更改多边形点
- 如何操作iframe之外的元素
- javascript对象操作:根据指定条件选择属性
- jQuery:暂停按钮可以暂停所有其他操作
- 用于选择/文本框操作的JavaScript
- 如何获取谷歌地图多边形的当前fillColor
- Google 脚本:用于创建日历活动的脚本运行时不会出错,但不会执行任何操作
- d3 中具有不同翻转操作的多个多边形
- 使用地理多边形的鼠标悬停操作