2016-09-19 61 views
2

我正在使用highchart绘制一些向下钻取功能。HighChart:针对多个图表的绘图线点击事件

我有一个让用户点击区域图并添加一行的功能。但后来我发现我的函数有一个bug。这些图表之间应该只有一条红线,但是当用户单击其他图表时,第一个图表上现有的红线不会被删除。

下面是我的图表共享功能。

var myPlotLineId = "myPlotLine"; 

    addPlotLine = function(evt) { 
     var point = evt.point; 
     var xValue = point.x; 
     var xAxis = point.series.xAxis; 

     Highcharts.each(xAxis.plotLinesAndBands, function(p) { 
     if (p.id === myPlotLineId) { 
      p.destroy(); 
     } 
     }); 
     xAxis.addPlotLine({ 
     value: xValue, 
     width: 1, 
     color: 'red', 
     id: myPlotLineId 
     }); 
    }; 

它应该只允许一条红线,因为我使用的是ID。

以下是当前情况。 enter image description here

由于我使用的ID为情节主线是不是应该允许两个线路,请参见我的例子:

http://jsfiddle.net/Xm4vW/74/

我想只有一个总RED LINE了许多的图表

更新1:

我试图在新的演示重绘(): http://jsfiddle.net/Xm4vW/80/

但它没有帮助。 如果问题不够清楚,请让我知道。

+0

而不是'p.destroy()'你试过'p.redraw()' – progrAmmar

+0

请参阅我的新的更新,谢谢 – anson920520

回答

3

有没有像 'Highcharts.each(xAxis.plotLinesAndBands,功能(P)' 的循环迭代图表和使用 'removePlotLine(PlotLineID)' 而不是 '破坏()':

for(i=0;i<Highcharts.charts.length; i++){ 
    var chart=Highcharts.charts[i]; 
    chart.xAxis[0].removePlotLine('myPlotLineId'); 
} 

而在括号设置ID:

id: 'myPlotLineId' 

这里的jsfiddle http://jsfiddle.net/asadsarwar89/bh4kz9rw/

+0

在此先感谢,我对Highchart的API文档感到困惑。 – anson920520