Events 向Highcharts系列动态添加事件

Events 向Highcharts系列动态添加事件,events,highcharts,Events,Highcharts,我可以创建我的Highchart: chart1 = new Highcharts.Chart(WhateverOptions); 当用户将光标放在某个点上时,我可以动态设置要执行的函数: chart1.tooltip.options.formatter = function() { return 'Whatever I want to display in the tooltip'; } 我正在寻找一种方法来指定当用户单击某个点时要执行的函数。 我需要动态地指定这

我可以创建我的Highchart:

  chart1 = new Highcharts.Chart(WhateverOptions);
当用户将光标放在某个点上时,我可以动态设置要执行的函数:

   chart1.tooltip.options.formatter = function() {
     return 'Whatever I want to display in the tooltip';
   }
我正在寻找一种方法来指定当用户单击某个点时要执行的函数。 我需要动态地指定这个函数,就像工具提示一样。 我不想在创建图表时将事件设置为选项的一部分

任何帮助都将不胜感激。
谢谢。

Highcharts为您提供了一个单击序列对象的事件


要动态添加此功能,我只需在主图表单击事件中调用一个虚拟函数,该函数不做任何操作,然后重新定义该函数,以便在添加单击功能时执行所需操作。

Highcharts为您提供了一个单击事件I系列对象


要动态添加此功能,我只需在主图表单击事件中调用一个虚拟函数,该函数不起任何作用,然后重新定义该函数,以便在添加单击功能时执行所需操作。

对于可以使用的各个点

    $(chart.series[0].data[0]).on('click', function() {
        alert('First Point Click!');
    });
对于系列中的所有点:

    $(chart.series[0].data).on('click', function() {
        alert('Series Point Click')
    });

这里有一个

用于您可以使用的各个点

    $(chart.series[0].data[0]).on('click', function() {
        alert('First Point Click!');
    });
对于系列中的所有点:

    $(chart.series[0].data).on('click', function() {
        alert('Series Point Click')
    });

下面是一个我在应用程序中遇到的类似场景

实际上,我使用json构建器生成所有服务器端数据,这不允许我在模板中编写纯javascript。此外,我在多个页面上为10+个不同的图形使用相同的模板,但我不想将相同的行为分配给所有这些图形

因此,我需要访问和编辑图表中所有点的onclick事件

var chart = $('#graph-container').highcharts();
// Iterate over the chart series in order to assign a point click event option
chart.series.forEach(function(s){
  s.options.point.events = {
    click: function(){
       // Store the point object into a variable
       var $$ = this;
       // Get the corresponding date in the from my x value
       var date = new Date($$.series.points[$$.index].x);
       // Do something with the date found
       console.log(date);
    }
  }
})

这应该适用于Highcharts 5.x,我在应用程序中遇到了类似的情况

实际上,我使用json构建器生成所有服务器端数据,这不允许我在模板中编写纯javascript。此外,我在多个页面上为10+个不同的图形使用相同的模板,但我不想将相同的行为分配给所有这些图形

因此,我需要访问和编辑图表中所有点的onclick事件

var chart = $('#graph-container').highcharts();
// Iterate over the chart series in order to assign a point click event option
chart.series.forEach(function(s){
  s.options.point.events = {
    click: function(){
       // Store the point object into a variable
       var $$ = this;
       // Get the corresponding date in the from my x value
       var date = new Date($$.series.points[$$.index].x);
       // Do something with the date found
       console.log(date);
    }
  }
})

这应该适用于Highcharts 5.x

谢谢SteveP,但是,正如我在问题中所述,我不想在图表创建时设置此选项,而是在现有图表上动态添加它。正如工具提示示例所示,这看起来很难。我建议了一种解决方法,即定义一个虚拟函数,在首次创建图表时,该函数在单击时不执行任何操作,然后在您想要添加一些单击功能时重新定义它。不幸的是,动态添加事件是不可能的,您唯一能做的就是使用新的选项参数重新绘制图表。您还可以使用更新函数,该函数允许更新某些系列参数。谢谢SteveP,但正如我在问题中所述,我不想在图表创建时设置此选项,而是将其动态添加到现有图表上。正如工具提示示例所示,这看起来很难。我建议了一种解决方法,即定义一个虚拟函数,在首次创建图表时,该函数在单击时不执行任何操作,然后在您想要添加一些单击功能时重新定义它。不幸的是,动态添加事件是不可能的,您唯一能做的就是使用新的选项参数重新绘制图表。您还可以使用更新功能,该功能允许更新某些系列参数。