I am trying to add a click event to a plot line in Highcharts.
According to the documentation this should be possible. Slightly editing the example from the documentation, it does not work for the band (working of the provided example with a band here, but same outcome for plot lines).
const report = document.getElementById('report');
Highcharts.chart('container', {
xAxis: {
plotBands: [{ // mark the weekend
color: '#FCFFC5',
from: Date.UTC(2010, 0, 2),
to: Date.UTC(2010, 0, 4),
events: {
click: () => {
alert('Band click');
}
}
}],
tickInterval: 24 * 3600 * 1000,
// one day
type: 'datetime'
},
series: [{
data: [29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4],
pointStart: Date.UTC(2010, 0, 1),
pointInterval: 24 * 3600 * 1000,
point: {
events: {
click: function () {
alert('Series click');
}
}
}
}]
});
#container {
height: 300px;
}
<script src="https://code.highcharts.com/highcharts.js"></script>
<div id="container"></div>
<div id="report"></div>
The click on the series throws the alert as expected.
What am I doing wrong?
2
Answers
Expanding Rory's correct answer to include the workaround for plot lines as well, one has to add
to the css file.
The issue is due to the
pointer-events: fill
CSS property applied to the.highcharts-plot-border
element which is overlaid on top of the band in the chart.Override that setting to fix the problem, for example to
auto
:I’d suggest raising this with HighCharts as a potential bug, as you should not have to apply this CSS change for events bound to a PlotBand to be handled.
Here’s a full working example with the fix applied: