如何在第二次点击时取消点击 highcharts 中的事件

How can I unclick an event in highcharts on the second click

在此示例中,我尝试取消单击显示在柱形图下方的图表。在我的示例中,下图只能更改为其他柱形图图形,但无法恢复到初始状态。 highcharts 有什么办法可以直接解决这个问题吗?还是我必须包含一些 jquery?

http://jsfiddle.net/Yrygy/150/

$(function () {
    var data = {
        test: [0, 1, 2],
        click: [13, 15, 14],
        other: [100,200 ,100]
    };

    var chart = new Highcharts.Chart({
        chart: {
            renderTo: 'container',
            type: 'bar'
        },
        plotOptions: {
            bar: {
                point: {
                    events: {
                        click: renderSecond
                    }
                }
            }
        },
        series: [{
            data: [{
                y: 100,
                name: 'test'
            }, {
                y: 34,
                name: 'click'
            }, {
                y: 67,
                name: 'other'
            }]
        }]
    });


    function renderSecond(e) {
        var point = this;
        console.log(point);
        $("#detail").highcharts({
            title: {
                text: point.name + ':' + point.y
            },
            series: [{
                data: data[point.name]
            }]
        });
    }
});

所以解决方法很简单。可以使用标志来检查是否单击了同一点,并在单击时 chart.destroy() 删除图表。

代码:

$(function() {
  var secondChart,
    clickedPointId,
    data = {
      test: [0, 1, 2],
      click: [13, 15, 14],
      other: [100, 200, 100]
    },
    chart;

  chart = new Highcharts.Chart({
    chart: {
      renderTo: 'container',
      type: 'bar'
    },
    plotOptions: {
      bar: {
        point: {
          events: {
            click: renderSecond
          }
        }
      }
    },
    series: [{
      data: [{
        y: 100,
        name: 'test'
      }, {
        y: 34,
        name: 'click'
      }, {
        y: 67,
        name: 'other'
      }]
    }]
  });


  function renderSecond(e) {
    var point = this;

    if (clickedPointId !== point.id) {
      clickedPointId = point.id;

      secondChart = Highcharts.chart('detail', {
        title: {
          text: point.name + ':' + point.y
        },
        series: [{
          data: data[point.name]
        }]
      });
    } else {
      clickedPointId = null;
      secondChart.destroy();
    }
  }
});

演示:

API参考: