编辑 Highcharts Legend 上的点击事件
Posted
技术标签:
【中文标题】编辑 Highcharts Legend 上的点击事件【英文标题】:Edit click event on Highcharts Legend 【发布时间】:2020-10-01 10:55:49 【问题描述】:我正在尝试编辑 Highcharts 图例项的点击事件。当前设置允许在单击图例项时切换真/假。相反,我希望单击图例项以将所有其他系列的可见性设置为 false,但单击的项目除外(基本上与现在的操作相反)。
我尝试构建一个 JSfiddle 来切换所有系列,但没有运气。见link
关键部分在这里:
legendItemClick: function()
var chart = Highcharts.chart;
var series = chart.series;
for (item in series)
if (series[item].visible)
series[item].hide();
else
series[item].show();
;
return false
单击图例项时,我尝试抓取图表和所有系列,然后循环浏览它们以切换可见性。
【问题讨论】:
【参考方案1】:这是另一种方法,您可以使用 plotOptions.series.events.legendItemClick
回调为所有系列实现所需的结果。
演示:http://jsfiddle.net/BlackLabel/vsj96c5x/
plotOptions:
series:
events:
legendItemClick(e)
e.preventDefault();
let chart = this.chart;
chart.series.forEach(s =>
if (s !== this && s.visible)
s.hide();
else
s.show();
)
,
API:https://api.highcharts.com/highcharts/plotOptions.series.events.legendItemClick
【讨论】:
【参考方案2】:你可以试试这样的:
var mychart = Highcharts.chart('container',
series: [
name: 'Installation',
data: [43934, 52503, 57177, 69658, 97031, 119931, 137133, 154175],
events:
legendItemClick: function()
return false
,
name: 'Manufacturing',
data: [24916, 24064, 29742, 29851, 32490, 30282, 38121, 40434],
events:
legendItemClick: function()
var numSeries = mychart.series.length;
for (var i=0 ; i<numSeries ; i++)
if (mychart.series[i] != this)
if (mychart.series[i].visible == true)
mychart.series[i].hide();
else
mychart.series[i].show();
return false
,
name: 'Sales & Distribution',
data: [11744, 17722, 16005, 19771, 20185, 24377, 32147, 39387]
]
);
http://jsfiddle.net/Lamjdhy3/1/
【讨论】:
以上是关于编辑 Highcharts Legend 上的点击事件的主要内容,如果未能解决你的问题,请参考以下文章
Highcharts Legend 问题:我想让 Legend 100% 宽度和文本中心对齐它在 crome 中工作正常,但在 Firefox 中没有对齐中心