响应式数据表和引导选项卡的问题

Posted

技术标签:

【中文标题】响应式数据表和引导选项卡的问题【英文标题】:Issue with Responsive DataTables And Bootstrap Tabs 【发布时间】:2015-12-17 20:57:26 【问题描述】:

我想在 Bootstrap 选项卡中使用数据表和响应式扩展。我有这个单独工作。

$(document).ready(function() 
    $('#example').DataTable( 
        responsive: true
     );
    $('#exampleInTab').DataTable( 
        responsive: true
     );
 );

$('a[data-toggle="tab"]').on('shown.bs.tab', function (e) 
    $($.fn.dataTable.tables(true)).DataTable()
        .columns.adjust()
        .responsive.recalc();
);

你可以看到问题here

【问题讨论】:

看不出是什么问题,你能再解释一下吗? 当然可以。有两个表格:一个在第二个选项卡内部,另一个在底部(选项卡外部)。如果您调整窗口大小,底部表格可以正常工作,而选项卡表格则不能。 可以看到here一个响应式数据表 【参考方案1】:

原因

您的代码存在多个问题:

    在 jQuery 库之前包含 Bootstrap 库 API 方法responsive.recalc()dataTables.responsive.js 中可用,因为1.0.1,您包括版本1.0.0。 一旦 DOM 可用,就应该附加事件处理程序。

解决方案

    在 jQuery 库之后包含 Bootstrap 库

    包括 Responsive 扩展版本 1.0.1 或更高版本

    使用下面的代码:

    $(document).ready(function () 
        $('#example').DataTable(
            responsive: true
        );
    
        $('#exampleInTab').DataTable(
            responsive: true
        );
    
        $('a[data-toggle="tab"]').on('shown.bs.tab', function (e) 
            $($.fn.dataTable.tables(true)).DataTable()
               .columns.adjust()
               .responsive.recalc();
        );    
    );
    

演示

有关代码和演示,请参阅 updated jsFiddle。

链接

有关 jQuery 数据表和引导选项卡最常见问题的解决方案,请参阅 jQuery DataTables – Column width issues with Bootstrap tabs。

【讨论】:

谢谢 Gyrocode。我认为作为底部表格的工作资源是有效的......在我的真实代码中没问题......但我在调用adjust()函数时在我的javascript中有其他错误【参考方案2】:

我尝试了上面的答案,但都没有奏效。我使用 JQuery Steps Wizard 作为选项卡。我还必须使用 $('#datatable').css("width", '100%') 才能使其正常工作。

wizard.steps(
            headerTag: "h3",
            bodyTag: "section",
            transitionEffect: "slideLeft",
            enableFinishButton: false,
            enablePagination: false,
            enableAllSteps: true,
            titleTemplate: "#title#",
            cssClass: "tabcontrol",
            onStepChanged: function (event, currentIndex, priorIndex) 

                if (currentIndex == 2) 
                    $('#datatable').css("width", '100%')
                    $($.fn.dataTable.tables(true)).DataTable().columns.adjust().responsive.recalc();
                
            
        )

我的数据表位于第三个选项卡上,因此请检查 currentIndex

【讨论】:

以上是关于响应式数据表和引导选项卡的问题的主要内容,如果未能解决你的问题,请参考以下文章

使用引导程序进行分页的响应式数据表或表

Jinja2 和 Flask:引导选项卡仅显示第一个选项卡的内容,而不显示其余选项卡的内容

引导选项卡中的数据表大小不正确

阻止引导选项卡的显示事件

引导导航选项卡的字体颜色在活动状态下没有变化

带有活动选项卡的动态引导导航