2016-09-19 66 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