触发器窗口在引导程序崩溃时调整大小

时间:2016-08-09 12:38:32

标签: javascript jquery html twitter-bootstrap

我有一个c3.js图表​​的大小调整问题我放在bootstrap collapse div中。与this question相似。在答案之后,我试图在每次加载c3图表时触发窗口调整大小,但似乎不起作用。我知道它是一个基本问题(jquery无知),但是每次加载图表或打开面板折叠div时如何运行$(window).trigger('resize');

HTML:

<div class="col-sm-4">                  
    <div class="panel-group">
        <div class="panel panel-default">
            <div class="panel-heading">
                <h4 class="panel-title">
                    <a data-toggle="collapse" href="#collapse4"><center>Title</center></a>
                </h4>
            </div>
            <div id="collapse4" class="panel-collapse collapse">
                <div id="chart3"></div>
                <div class="panel-footer"></div>
            </div>
        </div>
    </div>
</div>

JS:

$(function () {
    var chart = c3.generate({
        bindto: '#chart3',
        data: {
            columns: [
                ['data1', 30],
                ['data2', 50]
            ],
            type: 'donut',
        }
    });
    $(window).trigger('resize');
});

2 个答案:

答案 0 :(得分:1)

绑定到.click()事件:

$(document).ready(function() {
  $(".panel-collapse collapse").click(function() {
    $(window).trigger('resize');
  });
});

对于图表加载,它取决于您如何调用它来生成。如果c3.generate()是图形加载函数,则创建另一个包装函数,该函数同时调用c3.generate()$(window).trigger('resize');,然后始终加载图表:

function generateAndResizeWindow(options) {
  options.onrendered = function() { $(window).trigger('resize') }; // or whatever function generates your graph
  c3.generate(options);
}

然后打电话给:

generateAndResizeWindow({
    bindto: '#chart3',
    data: {
        columns: [
            ['data1', 30],
            ['data2', 50]
        ],
        type: 'donut',
    }
});

为你的例子。

答案 1 :(得分:1)

在代码后添加这些行。

chart.load({
  done: function() {$(window).trigger('resize');}
});