我正在使用D3.js构建折线图,我希望用户能够使用下拉菜单突出显示其邮政编码的值。当用户将鼠标悬停在一条线上时,我已经使用鼠标悬停事件执行此操作。
我尝试过设置mouseover和mouseout事件来调用" onmouseover"功能如下所示:
series.selectAll(".hover")
.on("mouseover", function(d,i) {
d3.selectAll(".line")
.style("opacity", 0.82)
.filter(function(p) { return p.zipcode == d.zipcode; })
.style("opacity", 1)
.style("stroke-width", 2)
.style("stroke", function(d,i) { return color2(i); });
d3.selectAll(".series text")
.style("opacity", 0)
.filter(function(p) { return p.zipcode == d.zipcode; })
.style("opacity", 1)
.on("mouseover", onmouseover)
.on("mouseout", onmouseout);
然后我还有我的" onmouseover"要通过下拉列表激活的功能:
function onmouseover(d,i){
d3.selectAll(".line")
.style("opacity", 0.82)
.filter(function(p) { return p.name == d.name; })
.style("opacity", 1)
.style("stroke-width", 2)
.style("stroke", function(d,i) { return color2(i); })
d3.selectAll(".series text")
.style("opacity", 0)
.filter(function(p) { return p.name == d.name; })
.style("opacity", 1);}})
使用下拉菜单时我尝试激活:
$("#dropdownselect").change(ziphandler)
function ziphandler(){
var key = $(this)
.children(":selected")
.val();
onmouseover({id : key});
}
理想的结果是,用户可以将鼠标悬停在一条线上以查看新样式,并通过在下拉菜单中选择其邮政编码来突出显示一行。
答案 0 :(得分:0)
我想你想打电话给$(this).onmouseover({id : key});
答案 1 :(得分:0)
您的代码存在一些问题:
zipselected
,而非dropdownselect
。ziphandler
和onmouseover
函数在不同的范围内声明。特别是,您无法从onmouseover
。ziphandler
onmouseover
函数中,您引用的.name
属性不存在。工作演示here。