2013-06-26 59 views
0

在Highcharts條形圖上,當用戶單擊其中一個條時,其他數據通過loadDetails函數在頁面上的其他位置加載。Highcharts:如何通過plotOptions.series.events處理觸摸事件

loadDetails通過plotOptions.series.events指定爲圖表的點擊回調函數:

var chart = new Highcharts.Chart({ 
    defaultSeriesType: 'bar', 
    ... 
    plotOptions: { 
     series: { 
      events: { 
       click: loadDetails 
      } 
     } 
    }, 
    ... 

}); 

function loadDetails() { 
    ... 
} 

的問題是我需要調用同一個回調函數在移動設備上touchstart事件。

據我所知,似乎沒有任何通過Highcharts API添加觸摸事件處理程序的明顯方法:http://api.highcharts.com/highcharts#plotOptions.series.events

有沒有人有任何想法如何爲觸摸事件添加回調函數,或觸發觸摸事件的點擊回調函數?

回答

1

是的,像這樣的東西是不支持的,我建議你創建想法here

我想到的唯一解決方法是使用Element.on函數將自定義事件添加到圖表上存在的元素。例如:http://jsfiddle.net/3bQne/269/

chart: { 
     renderTo: 'container', 
     events: { 
      load: function(){ 
       var chart = this, 
        path = chart.series[0].tracker; 

       path.on('click', function() { 
        alert("click");; 
       }); 
      } 
     } 
    } 
+0

感謝您的支持。我正在研究你的建議解決方法,並且可以通過path.element.addEventListener獲得一個touchstart事件 - 使用path.on('touchstart')似乎沒有工作 - 但我似乎沒有訪問事件處理函數中的event.point。 –

+0

你爲什麼期望有event.point?您正在將事件添加到SVG元素,因此您需要單獨傳遞您的觀點。不過,我建議使用.on() - 因爲它肯定會在IE中工作<9. –

+0

對不起,我並不期望有event.point,但是爲click事件觸發的現有回調函數使用它。幸運的是,IE <9不支持我正在處理的內容。 –