【问题标题】:Changing the class name of Google visualization table chart更改谷歌可视化表格图表的类名
【发布时间】:2014-03-06 07:33:07
【问题描述】:

Here 是一个示例 Google 可视化表格图表,绘制为,

  table = new google.visualization.ChartWrapper({
        'chartType': 'Table',
        'dataTable': data,
        'containerId': 'table',
        'options': {
            'width': '100%',
            'showRowNumber' : true
        },
    });
    table.draw();

上面的谷歌可视化表格图表有一个默认的类名google-visualization-table-tablethis link 解释了如何自定义其单独的样式。但是如何使用 jquery 将表的类名本身更改为 Twitter Bootstrap 样式?这样,我就可以使用该类名自定义整个表格样式。我尝试了类似

$(document).ready(function(){
  $(".google-visualization-table-table").attr('class', 'table');
  $("table").addClass( 'table-bordered table-condensed table-striped' );
});

但这对我不起作用。

【问题讨论】:

  • 你能详细说明什么不起作用吗?我做了一个快速的jsfiddle 并且您的代码(当您单击表格时运行)似乎按预期工作
  • @dtyler - 在这里找到我的示例:jsfiddle.net/8Z75X/1,它有一个 Google 可视化表格图表。我想将其类名替换为 twitter 引导表类。另请注意,它应该在没有点击事件的情况下发生。 IE。在$(document).ready(function(){/////}); 内部。
  • 这是我更新的小提琴:jsfiddle.net/8Z75X/4 其中有一个示例引导表(结果中的第二个表)。我也试图在第一张桌子上实现这种风格。这样我就可以根据需要使用引导样式对其进行样式设置。

标签: jquery css charts twitter-bootstrap-3 google-visualization


【解决方案1】:

我更新了您提供的小提琴 - 请参阅 http://jsfiddle.net/8Z75X/2/ 了解工作演示

基本上,table.draw(); 发生在后台,因此 jquery 脚本运行并且没有元素可以更改其类。

相反,我添加了一个 ready 监听器,然后运行 ​​jQuery 脚本,而不是在 document.ready 块中。

google.visualization.events.addListener(table, 'ready', function(){
    $(".google-visualization-table-table").attr('class', 'table');
    $("table").addClass( 'table-bordered table-condensed table-striped' );
    });

PS - 您可能想尝试 removeClass,并链接您的方法调用 - 可能会快一点

$(".google-visualization-table-table")
    .removeClass('google-visualization-table-table')
    .addClass('table table-bordered table-condensed table-striped');

应该也能正常工作,但只会影响此表,而不影响页面中的其他表

更新

这是一个新版本,它也删除了表的所有子类。遍历所有节点并检查每个类以查看它是否以“google-visualization”开头的效率不是很高,但是如果没有要删除的所有类的完整列表并调用 $( ) 在每个项目上。 http://jsfiddle.net/8Z75X/5/

它还有一个额外的 jQuery 调用来重置 google 设置的固定宽度

.css("width", "");

只是提到......这似乎需要做很多工作才能将 Google 的插件重置为原生 html/js - 是否有您正在寻找的特定功能?有很多用于表格排序或过滤的轻量级插件,或者只是纯 js/jquery 来向表格添加行...

【讨论】:

  • 它可以工作.. 但是如何保持引导程序的响应性质,如本示例中所示:jsfiddle.net/8Z75X/4。以及如何一次性删除其所有子级(tr、td 等)的类名。
  • 谢谢.. 我选择 Google 是因为我们可以使用 Google visualization control wrappers 来控制输出,例如 Categoryfilter Control、ChartRangeFilter Controls 等。
  • 另外,我认为我们也应该触发 statechange 事件监听器。否则,如果图表的状态发生变化(例如:排序时),所有的自定义都会消失......!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多