2012-06-12 12 views
18

que tienen los siguientes elementos que funciona bien:¿Renderizar HighCharts a clase en lugar de 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' 
        } 
       }); 

      } 
     }); 
    } 
}); 

Cuando el HTML es como la siguiente:

<div id="portlet_content_18"> 

El usuario puede seleccionar dinámicamente la que portlet s/él quiere en la pantalla. S/He también puede seleccionar tener el mismo portlet en la pantalla más de una vez por razones de comparación.

lo tanto, si el código HTML termina por convertirse en:

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

Sólo la primera div se rellena con la tabla, y el segundo permanece en blanco. ¿Cómo puedo evitar este problema?

+1

No puede tener varias identificaciones pero puede probar con 'clase'. Cámbielo a class = "port-18" y asegúrese de actualizarlo en "success". –

Respuesta

18

Sí, puedes. Ver su ejemplo aquí: http://jsfiddle.net/gh/get/jquery/1.7.1/highslide-software/highcharts.com/tree/master/samples/highcharts/chart/renderto-jquery/

básicamente se asigna un elemento de jQuery a una variable:

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

+4

Lo he intentado, pero no estoy teniendo mucha suerte. Aquí hay una jsfiddle de lo que he probado .: http://jsfiddle.net/Chmts/ – oshirowanen

+0

Esto no funcionó para mí. – richardaday

+5

Usar solo $ contenedor no funcionará. Como demuestra el jsfiddle de Highcharts, debe especificar $ container [0]. –

10

Como ya Ido said, no se puede tener varios identificadores, pero se pueden tener varias clases.

que tenía que hacer lo siguiente:

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

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

Además, usted realmente no tiene que asignar el objeto gráfico a una variable - al menos yo no quería.

Espero que ayude a alguien.

+0

Muchas gracias. Esto también funciona para mí. – Strabek

Cuestiones relacionadas