javascript - 一个id可以有多个highcharts吗?

标签 javascript jquery ruby-on-rails highcharts haml

我在 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') 没有返回任何内容。其次,这是正确的思考方式吗?我目前正在动态生成 haml div id="ownershipChart" 所以每次都动态生成一个 highcharts js 对象也感觉不对。

当附加的 div id 未知且因用户而异时,生成多个 Highcharts 的最佳方法是什么?

最佳答案

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

$(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 的引用填充,这意味着数据将从迭代中的当前元素读取。

关于javascript - 一个id可以有多个highcharts吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27224254/

相关文章:

javascript - Handlebars.js:将对象属性作为 Ember.js 组件属性传递

javascript - 在嵌套 ng-repeat 中的复选框上使用 ng-checked 始终为 true

jQuery 选择器 : only link with images inside them

javascript - 更改分页中选定的页面

ruby-on-rails - http 方: `connect':连接被对等方重置 - SSL_connect (Errno::ECONNRESET)

ruby-on-rails - 你如何选择数组中的每第 n 个项目?

javascript - angularjs ng- Controller 不起作用

javascript - 如何组合 2 个对象并合并其中的数组

javascript - 检查下拉菜单并动态更改单元格颜色

ruby-on-rails - Rails 3 事件管理员。有人知道如何设置正常、警告和错误颜色吗?