2012-06-12 10 views
18

Ho il seguente, che funziona bene:Rendering di HighCharts in classe anziché 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' 
        } 
       }); 

      } 
     }); 
    } 
}); 

Dove il codice HTML simile a questa:

<div id="portlet_content_18"> 

L'utente può selezionare quali dinamicamente portlet s/che vuole sullo schermo. S/He può anche scegliere di avere lo stesso portlet sullo schermo più di una volta per ragioni di confronto.

Quindi, se il codice HTML finisce per diventare:

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

Solo il primo div ottiene popolata con il grafico, e la seconda rimane vuoto. Come posso aggirare questo problema?

+1

Non puoi avere più ID ma puoi provare con 'classe'. Cambialo in class = "port-18" e assicurati di aggiornarlo su "successo". –

risposta

18

Sì, è possibile. Vedere il loro esempio qui: http://jsfiddle.net/gh/get/jquery/1.7.1/highslide-software/highcharts.com/tree/master/samples/highcharts/chart/renderto-jquery/

fondamentalmente si assegna un elemento jQuery ad una variabile:

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

+4

Ci ho provato, ma non ho molta fortuna. Ecco un jsfiddle di quello che ho provato .: http://jsfiddle.net/Chmts/ – oshirowanen

+0

Questo non ha funzionato per me. – richardaday

+5

L'utilizzo di solo $ container non funzionerà. Come dimostra il jsfiddle di highcharts, devi specificare $ container [0]. –

10

Come Ido già said, non si può avere più ID, ma è possibile avere più classi.

ho dovuto effettuare le seguenti operazioni:

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

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

Inoltre, è in realtà non hanno per assegnare l'oggetto Chart a una variabile - almeno io non volevo.

Spero che aiuti qualcuno.

+0

Grazie mille. Funziona anche per me. – Strabek

Problemi correlati