2012-06-12 74 views
18

我有正常工作的情況如下:將HighCharts渲染爲類而不是id?

$(document).ready(function() { 

    get_data_for_chart(); 

    function get_data_for_chart() { 
     $.ajax({ 
      url: 'get_data.aspx?rand=' + Math.random(), 
      type: 'GET', 
      dataType: 'json', 
      error: function(xhr, status, error) { 
       console.log(status); 
       console.log(xhr.responseText); 
      }, 
      success: function(results) { 
       var chart1; 

       chart1 = new Highcharts.Chart({ 
        chart: { 
         renderTo: 'portlet_content_18', 
         defaultSeriesType: 'column' 
        } 
       }); 

      } 
     }); 
    } 
}); 

凡HTML看起來是這樣的:

<div id="portlet_content_18"> 

用戶可以動態地選擇其中portlet他/她想要在屏幕上。出於比較的原因,他/她也可以選擇在屏幕上多次使用相同的portlet

因此,如果HTML最終成爲:

<div id="portlet_content_18"> 
<div id="portlet_content_18"> 

只有第一div被填充與圖表,而第二個保持空白。我怎樣才能解決這個問題?

+1

你不能有多個ID,但你可以嘗試'class'。將其更改爲class =「port-18」,並確保在「成功」上更新它。 –

回答

18

是的,你可以。在這裏看到的例子:http://jsfiddle.net/gh/get/jquery/1.7.1/highslide-software/highcharts.com/tree/master/samples/highcharts/chart/renderto-jquery/

基本上你分配一個jQuery的元素給一個變量:

renderTo: $('.myclass')[0]

+4

我已經嘗試過,但我沒有多少運氣。這裏是我嘗試過的jsfiddle:http://jsfiddle.net/Chmts/ – oshirowanen

+0

這不適合我。 – richardaday

+5

只使用$容器不起作用。正如來自highcharts的jsfiddle所演示的那樣,您必須指定$ container [0]。 –

10

由於伊已經said,你不能有多個ID,但你可以有多個類。

我必須做到以下幾點:

var $containers = $('.container'), 
    chartConfig = { 
     chart: { 
      renderTo: null, 
      defaultSeriesType: 'column' 
     } 
    }; 

$containers.each(function(i, e){ 
    chartConfig.chart.renderTo = e; 
    new Highcharts.Chart(chartConfig); 
}); 

而且,你真的沒有指定圖表對象變量 - 至少我不想。

希望它有助於某人。

+0

非常感謝。這也適用於我。 – Strabek