You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Highcharts禁用图例点击失效问题求助(疑因版本差异)

禁用Highcharts图例点击失效问题

我尝试了多种禁用Highcharts图例点击的方案,但均未生效,推测问题可能与使用的Highcharts版本有关。此前参考过一些早期解决方案案例,但即使按照示例代码捕获图例点击事件,图例依然可以被点击。

测试代码如下:

$(function() {
  Highcharts.chart('container', {
    title: {
      text: '月度平均气温',
      x: -20 // 居中
    },
    subtitle: {
      text: '数据来源: WorldClimate.com',
      x: -20
    },
    xAxis: {
      categories: ['1月', '2月', '3月', '4月', '5月', '6月',
        '7月', '8月', '9月', '10月', '11月', '12月'
      ]
    },
    yAxis: {
      title: {
        text: '气温 (°C)'
      },
      plotLines: [{
        value: 0,
        width: 1,
        color: '#808080'
      }]
    },
    tooltip: {
      valueSuffix: '°C'
    },
    legend: {
      layout: 'vertical',
      align: 'right',
      verticalAlign: 'middle',
      borderWidth: 0
    },
    plotOptions: {
      series: {
        events: {
          legendItemClick: function(e) {
            // e.preventDefault();
            return false;
          }
        }
      }
    },
    series: [{
      name: '东京',
      data: [7.0, 6.9, 9.5, 14.5, 18.2, 21.5, 25.2, 26.5, 23.3, 18.3, 13.9, 9.6]
    }, {
      name: '纽约',
      data: [-0.2, 0.8, 5.7, 11.3, 17.0, 22.0, 24.8, 24.1, 20.1, 14.1, 8.6, 2.5]
    }, {
      name: '柏林',
      data: [-0.9, 0.6, 3.5, 8.4, 13.5, 17.0, 18.6, 17.9, 14.3, 9.0, 3.9, 1.0]
    }, {
      name: '伦敦',
      data: [3.9, 4.2, 5.7, 8.5, 11.9, 15.2, 17.0, 16.6, 14.2, 10.3, 6.6, 4.8]
    }]
  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
<script src="https://code.highcharts.com/highcharts.js"></script>
<script src="https://code.highcharts.com/modules/exporting.js"></script>

<div id="container" style="min-width: 310px; height: 400px; margin: 0 auto"></div>

解决方案

1. 适配高版本Highcharts(v10+)

高版本中,仅通过plotOptions.series.events.legendItemClick返回false已无法完全阻止点击,需补充图例自身的点击事件拦截,或直接禁用交互:

方法A:拦截图例点击事件

legend: {
  layout: 'vertical',
  align: 'right',
  verticalAlign: 'middle',
  borderWidth: 0,
  // 拦截图例项点击
  itemEvents: {
    click: function() {
      return false;
    }
  }
},
plotOptions: {
  series: {
    events: {
      legendItemClick: function() {
        return false;
      }
    }
  }
}

方法B:CSS禁用交互(更简洁)

通过CSS直接取消图例项的点击能力,无需处理事件:

legend: {
  layout: 'vertical',
  align: 'right',
  verticalAlign: 'middle',
  borderWidth: 0,
  itemStyle: {
    pointerEvents: 'none', // 禁用点击交互
    cursor: 'default' // 鼠标样式改为默认
  }
}

2. 多版本兼容写法

如果需要同时适配新旧版本,可同时配置两处事件拦截:

legend: {
  layout: 'vertical',
  align: 'right',
  verticalAlign: 'middle',
  borderWidth: 0,
  itemEvents: {
    click: function() {
      return false;
    }
  }
},
plotOptions: {
  series: {
    events: {
      legendItemClick: function() {
        return false;
      }
    }
  }
}

内容的提问来源于stack exchange,提问作者edwin.koh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 01:55:55