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

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

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

  1. $('#container').highcharts({
  2. chart: {
  3. events: {
  4. load: function(event) {
  5. function1();
  6. function2();
  7. function3();
  8. },redraw: function(event) {
  9. functionA();
  10. functionB();
  11. functionC();
  12. }
  13. }
  14. },xAxis: {
  15. },series: [{
  16. data: [29.9,71.5]
  17. }]
  18. });

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

  1. //The wrapper simulation
  2. ^
  3. |
  4. |
  5. /////////////////////////////////////////
  6. //$('#container').highcharts({ //
  7. // chart: { //
  8. // events: { //
  9. // load: function(event) { //
  10. // function1(); //
  11. // },//
  12. // redraw: function(event) { //
  13. // functionA(); //
  14. // } //< "I dont't have access to this code"
  15. // } //
  16. // },//
  17. // xAxis: { //
  18. // },//
  19. // series: [{ //
  20. // data: [29.9,71.5] //
  21. // }] //
  22. //}); //
  23. /////////////////////////////////////////
  24. //I only have the container id in my hands,I can get the highchart object:
  25. $('#container').highcharts();
  26. //And I need to do something like this:
  27. appendOnLoadEvent(function2);
  28. appendOnLoadEvent(function3);
  29. appendOnRedrawEvent(functionB);
  30. appendOnRedrawEvent(functionC);

这可能吗?

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

就像是:

  1. var redrawCallbacks = [];
  2. $(...).highcharts({
  3. chart: {
  4. events: {
  5. redraw: function(event) {
  6. for (var i = 0; i < redrawCallbacks.length; ++i) redrawCallbacks[i].call(this,event);
  7. }
  8. }
  9. }});

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

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

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

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

猜你在找的jQuery相关文章