【问题标题】:Is it possible to have multiple highcharts with one id?一个id可以有多个highcharts吗?
【发布时间】:2014-12-01 08:17:49
【问题描述】:

我在haml有以下场景:

#ownershipChart{"chart-data" => [["pie1", 100], ["pie2", 150], ["pie3", 200]]}
#ownershipChart{"chart-data" => [["pie4", 45], ["pie5", 50], ["pie6", 20]]}

在javascript中:

$(function(){
  $('#ownershipChart').highcharts({
    chart: {
      type: 'pie'
    },
    title:{
      text: 'Ownership'
    },
    plotOptions:{
      pie:{
        allowPointSelect: true
      }
    },
    series: [{
      type: 'pie',
      name: 'Ownership',
      data: $('#ownershipChart').attr('chart-data')
    }]
  });
});

如您所见,我正在尝试创建一个同时适用于这两个图表的 highcharts 函数。首先,我知道这是不正确的,因为 $('#ownershipChart').attr('chart-data') 没有返回任何内容。其次,这是正确的思考方式吗?我目前是动态生成hamldiv id="ownershipChart"所以每次动态生成highcharts js对象也感觉不对。

当它们所附加的div ids 是未知的并且因用户而异时,生成多个 highcharts 的最佳方法是什么?

【问题讨论】:

  • 这里不能用class吗?
  • 我尝试了下面的@Rory 解决方案,但无法让$(this).attr('chart-data') 实际返回对象中的集合中的数据。

标签: javascript jquery ruby-on-rails highcharts haml


【解决方案1】:

您可以改为使用一个类,并在创建图表时遍历每个实例。像这样的:

$(function () {
    $('.ownershipChart').each(function()  {
        $(this).highcharts({
            chart: {
                type: 'pie'
            },
            title: {
                text: 'Ownership'
            },
            plotOptions: {
                pie: {
                    allowPointSelect: true
                }
            },
            series: [{
                type: 'pie',
                name: 'Ownership',
                data: $(this).attr('chart-data')
            }]
        });
    });
});

请注意,data 属性由对this 的引用填充,这意味着数据将从迭代中的当前元素中读取。

【讨论】:

  • 我相信 highcharts 不会让你使用类。
  • 当您使用 jQuery 连接器时,它确实如此。使用本机 JS 实现,它只允许使用 id 属性,因为它在内部使用 getElementById
  • 当我尝试这个时,数据没有加载到 highcharts 对象中。我确实通过警报确认$(this).attr('chart-data') 可以工作。你知道data: $(this).attr('chart-data') 没有编译有什么问题吗?
  • 我会为此提出一个新问题,因为这个问题是关于将图表附加到各个元素,而这与所提供对象的格式有关。
  • 我如何确认这是正确的并且它适用于 highcharts?
猜你喜欢
  • 2018-05-21
  • 2012-09-26
  • 2013-04-27
  • 2010-11-11
  • 2014-06-16
  • 2013-05-31
  • 2011-02-18
  • 2014-01-11
相关资源
最近更新 更多