当前位置:  开发笔记 > 前端 > 正文

用于按钮的jQuery Datatable DOM定位

如何解决《用于按钮的jQueryDatatableDOM定位》经验,为你挑选了1个好方法。

我刚刚将jQuery Datatable版本升级到1.10.然后我试图用"Button"扩展删除它的退役插件,如"Colvis"和"Tabletools".这里一切都很好.

但对我来说问题是,我无法将"Colvis"按钮与"Tabletool"按钮分开.

"sDom": "B<'row'><'row'<'col-md-6'l><'col-md-6'f>r>t<'row'<'col-md-4'i>><'row'p>B",
    "buttons": [
        'copyHtml5',
        'excelHtml5',
        'csvHtml5',     
        {
            extend: 'colvis',
            postfixButtons: [ 'colvisRestore' ],
            columns: '0,1,2,3,4,5,6'
        }
    ],
    language: {
        buttons: {
            colvis: 'Change columns'
        }
    }

在"sDom"中,字母"B"表示按钮.所以我将所有四个按钮(复制,Excel,CSV和Colvis)放在一行中.但我需要将"Colvis"按钮与(Copy,Excel和CSV)分开.

那么有没有办法在搜索框附近添加一个按钮,在分页附近添加另一个按钮?

要么

"sDom"或"按钮"中是否有可用的配置?

谢谢!



1> davidkonrad..:

您可以使用<'.class'>或向dataTables dom控件添加新元素<'#id'>.例如,

在分页的左侧插入一个新元素,<'#colvis'>然后p:

"sDom": "B<'row'><'row'<'col-md-6'l><'col-md-6'f>r>t<'row'<'col-md-4'i>><'row'<'#colvis'>p>"

colvis按钮具有类.buttons-colvis,因此您可以通过以下方式将它们永久移动到注入的#colvis元素:

$('.buttons-colvis').detach().appendTo('#colvis')

这是将colvis按钮移动到另一个位置的快速方法.


关于@ GreeKatrina的建议,是的 - 但正确的放置方法是:

var colvis = new $.fn.dataTable.Buttons( table, {
    buttons: [
        {
            extend: 'colvis',
            ... 
        }
   ]
})
colvis.container().appendTo('#colvis')

如果你有一个#colvis元素当然.


我的建议: 除了以上硬编码解决方案,你专门针对colvis按钮,你可以猴子修补dataTables按钮,所以每个扩展按钮可以有一个container选项.初始化后,按钮移动到指定的container:

var org_buildButton = $.fn.DataTable.Buttons.prototype._buildButton;
$.fn.DataTable.Buttons.prototype._buildButton = function(config, collectionButton) {
   var button = org_buildButton.apply(this, arguments);
   $(document).one('init.dt', function(e, settings, json) {
       if (config.container && $(config.container).length) {
          $(button.inserter[0]).detach().appendTo(config.container)
       }
   })    
   return button;
}

使用container选项:

{
   extend: 'colvis',
   postfixButtons: [ 'colvisRestore' ],
   container : '#colvis', //<---
   columns: '0,1,2,3,4,5'
}

演示 - > http://jsfiddle.net/v4bLv83h/

如示例所示,您现在可以为每个按钮指定备用容器.注意,container可以是任何元素,它不必是注入的元素dom.另请注意(如您在小提琴中可能会注意到的)如果要使注入元素与本机控件元素(例如分页块)一起正确流动,则需要进行一些样式设置.

推荐阅读
拾味湖
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有