javascript – 在Highcharts中动态附加onload或重绘事件函数

前端之家收集整理的这篇文章主要介绍了javascript – 在Highcharts中动态附加onload或重绘事件函数前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我需要在Highcharts中动态追加onload或redraw事件函数,我知道在配置步骤中进行,如:

$('#container').highcharts({
   chart: {
       events: {
          load: function(event) {
              function1();
              function2();
              function3();
          },redraw: function(event) {
              functionA();
              functionB();
              functionC();
          }
       }        
    },xAxis: {
    },series: [{
        data: [29.9,71.5]     
    }]
});

但是我需要在配置图表之后这样做(因为我无法访问配置图表步骤,图表通过包装器来到我的代码中)并且我需要做这样的事情:

//The wrapper simulation
^
|
|
/////////////////////////////////////////
//$('#container').highcharts({         //
//    chart: {                         //
//       events: {                     //
//          load: function(event) {    //
//              function1();           //
//          },//
//          redraw: function(event) {  //
//              functionA();           //
//          }                          //< "I dont't have access to this code"
//       }                             //  
//    },//
//    xAxis: {                         //
//    },// 
//    series: [{                       //
//        data: [29.9,71.5]           //   
//    }]                               // 
//});                                  //
/////////////////////////////////////////

//I only have the container id in my hands,I can get the highchart object:
$('#container').highcharts();

//And I need to do something like this:
appendOnLoadEvent(function2);
appendOnLoadEvent(function3);

appendOnRedrawEvent(functionB);
appendOnRedrawEvent(functionC);

这可能吗?

最佳答案
最简单的方法是创建第一个示例中描述的事件,并在这些函数中执行数组中的所有必要事件处理程序.

就像是:

  var redrawCallbacks = [];

  $(...).highcharts({
  chart: {
      events: {
          redraw: function(event) {
              for (var i = 0; i < redrawCallbacks.length; ++i) redrawCallbacks[i].call(this,event);
          }
      }
  }});

查看完整示例:http://jsfiddle.net/5S6hF/2/

UPDATE
假设您使用的是默认的jQuery适配器,您可以稍后使用以下内容定义事件:

$(chart).on('redraw',function(){ alert('new event handler'); });

请参阅http://jsfiddle.net/5S6hF/6/的演示

猜你在找的jQuery相关文章