Javascript 单击的图例应显示剩余的所有图例应使用highchart.js自动隐藏在图表中
我在highchart中有10个图例,如果我单击第一个图例,则单击的图例应显示剩余的所有图例应自动隐藏 下面是带有两个图例的代码Javascript 单击的图例应显示剩余的所有图例应使用highchart.js自动隐藏在图表中,javascript,jquery,angularjs,highcharts,Javascript,Jquery,Angularjs,Highcharts,我在highchart中有10个图例,如果我单击第一个图例,则单击的图例应显示剩余的所有图例应自动隐藏 下面是带有两个图例的代码 $(函数(){ var图表=$(“#容器”)。highcharts({ 图例:{ 已启用:true }, xAxis:{ 类别:[一月、二月、三月、四月、五月、六月、七月、八月、九月、十月、十一月、十二月] }, 系列:[{ 数据:[29.9,71.5,106.4,129.2,144.0,176.0,135.6148.5,216.4194.1,95.6,54.4]
$(函数(){
var图表=$(“#容器”)。highcharts({
图例:{
已启用:true
},
xAxis:{
类别:[一月、二月、三月、四月、五月、六月、七月、八月、九月、十月、十一月、十二月]
},
系列:[{
数据:[29.9,71.5,106.4,129.2,144.0,176.0,135.6148.5,216.4194.1,95.6,54.4]
}, {
数据:[144.0176.0135.6148.51216.4194.1,95.6,54.4,29.9,71.5106.4129.2]
}]
});
});代码>
您需要在序列上添加legendItemClick事件,当单击时,该事件将显示/隐藏相应的序列
plotOptions: {
series: {
events: {
legendItemClick: function (event) {
var sr = this.chart.series;
for(i = 0; i < sr.length; i++) {
if(this == sr[i])
sr[i].setVisible(true);
else
sr[i].setVisible(false);
}
return false;
}
}
}
}
plotOptions:{
系列:{
活动:{
legendItemClick:函数(事件){
var sr=this.chart.series;
对于(i=0;i
在此处找到修改后的代码:var alias=this;
系列:{
活动:{
legendItemClick:函数(事件){
var sr=this.chart.series;
对于(变量i=0;i
在这里,我创建了一个名为selectedLines的数组,其中包含所有选定的图例
变量sr包含一个序列,我们正在循环遍历它以找到一个刚刚单击的图例用户。如果选定图例已存在于选定的行中,则我们将从阵列中删除。第二次点击它将取消选择
如果图例尚未出现,则将其推送到SelectedLines数组。
现在selectedLines数组中的所有图例都已单击“我的用户”
我们已经隐藏了所有的图例,所以我们只需通过selectedLines运行另一个循环,以仅显示选定的图例
此功能使用户可以依次单击要查看的图例,其余图例将隐藏
PS:我使用了setVisible(false,false)而不是hide(),因为每次hide()都会重新绘制,而setVisible(false,false)不会。最后,我们调用redraw()来更新DOM。wot…………嗨,Joe,……只有单击的图例系列才会显示highchart中的剩余系列会自动隐藏。……我不知道你的意思,你能发布代码并告诉我们你想要什么吗[29.9,71.5,106.4,129.2,144.0,176.0,135.6,148.5,216.4,194.1,95.6,54.4],{数据:[129.2,144.0,176.0,135.6,148.5,216.4,194.1,95.6,54.4,29.9,71.5,106.4]}];//按钮操作变量$button=$('#按钮');$button.点击(函数(d){图表。隐藏图表(d) });请解释更多关于更容易理解的答案。@TheParam解释添加了
var alias = this;
series: {
events: {
legendItemClick: function (event) {
var sr = this.chart.series;
for(var i = 0; i < sr.length; i++) {
sr[i].setVisible(false, false);
if(this == sr[i])
{
if(alias.selectedLines.indexOf(this) != -1){
alias.selectedLines.splice(alias.selectedLines.indexOf(this), 1);
}
else{
alias.selectedLines.push(sr[i])
}
}
}
for(var i = 0; i < alias.selectedLines.length; i++) {
alias.selectedLines[i].setVisible(true, false);
}
this.chart.redraw()
return false;
}
}
}