2012-06-12 5 views
18

Ich habe folgendes, der gut arbeitet:Rendern von HighCharts in Klasse statt 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' 
        } 
       }); 

      } 
     }); 
    } 
}); 

Wo die HTML etwa wie folgt aussieht:

<div id="portlet_content_18"> 

Der Benutzer dynamisch die portlet s wählen kann er/sie auf dem Bildschirm will. Er/Sie kann auch auswählen, dass portlet aus Vergleichsgründen mehrfach auf dem Bildschirm angezeigt wird.

Also, wenn die HTML endet immer:

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

Nur die erste div mit dem Diagramm bevölkert wird, und der zweite bleibt leer. Wie kann ich dieses Problem umgehen?

+1

Sie können nicht mehrere IDs haben, aber Sie können es mit 'class' versuchen. Ändern Sie es in class = "port-18" und stellen Sie sicher, dass Sie es auf "Erfolg" aktualisieren. –

Antwort

18

Ja, Sie können. Siehe ihr Beispiel hier: http://jsfiddle.net/gh/get/jquery/1.7.1/highslide-software/highcharts.com/tree/master/samples/highcharts/chart/renderto-jquery/

im Grunde Sie ein jQuery Element einer Variablen zuweisen:

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

+4

Ich habe das versucht, aber ich habe nicht viel Glück. Hier ist ein Beispiel von dem, was ich versucht habe: http://jsfiddle.net/Chmts/ – oshirowanen

+0

Das hat nicht für mich funktioniert. – richardaday

+5

Verwenden Sie nur $ Container wird nicht funktionieren. Wie die jfiddle von highcharts zeigt, müssen Sie $ container [0] angeben. –

10

Wie Ido bereits said, Sie nicht mehrere IDs haben kann, aber Sie können mehrere Klassen haben.

hatte ich folgendes zu tun:

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

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

Auch Sie haben nicht wirklich das Chart-Objekt zu einer Variablen zugewiesen werden - zumindest ich nicht wollte.

Ich hoffe, es hilft jemandem.

+0

Vielen Dank. Das funktioniert auch für mich. – Strabek

Verwandte Themen