数据表样式,因此引导按钮与其他元素显示在同一行上

Tod*_*ddT 24 jquery datatables twitter-bootstrap datatables-1.10

我在我的rails网站上使用jQuery DataTables插件和Bootstrap.我无法将自定义按钮和其他表头元素嵌套在同一行中,它们是堆叠的而不是内联的.

有什么建议让他们都在同一条线上吗?

以下是我使用的一些JavaScript:

$(document).ready(function() {
  $('#products').DataTable( {
    dom: 'Blfrtip',
    buttons: [ {
      text: 'Pull my products',
      action: function ( e, dt, node, config ) {
        alert( 'Button activated' );
      }
    }]
  });
});
Run Code Online (Sandbox Code Playgroud)

Gyr*_*com 54

解决方案#1

对于jQuery DataTables使用Bootstrap样式,这是最令人困惑的部分,到目前为止它没有记录.Bootstrap扩展覆盖默认值dom,可以通过查看源代码来确认.

您必须使用dom类似如下所示的特制选项:

dom: 
    "<'row'<'col-sm-3'l><'col-sm-6 text-center'B><'col-sm-3'f>>" +
    "<'row'<'col-sm-12'tr>>" +
    "<'row'<'col-sm-5'i><'col-sm-7'p>>",
Run Code Online (Sandbox Code Playgroud)

您可以通过在选项中使用Bootstrap rowcol-*类来实现创意dom.

有关代码和演示,请参阅此jsFiddle.

解决方案#2

您也可以使用此示例中所示的直接插入方法,因为dom用于Bootstrap样式的默认选项非常复杂.

var table = $('#example').DataTable({
   initComplete: function(){
      var api = this.api();

      new $.fn.dataTable.Buttons(api, {
         buttons: [
            {
               text: 'Pull my products',
               action: function ( e, dt, node, config ) {
                  alert( 'Button activated' );
               }
            }
         ]
      });

      api.buttons().container().appendTo( '#' + api.table().container().id + ' .col-sm-6:eq(0)' );  
   }
});
Run Code Online (Sandbox Code Playgroud)

请注意,代码与上面引用的示例不同,因为DataTables 1.10.9 存在问题,如果未指定选项或选项中没有B字符,则会阻止按钮直接插入.domdom

有关代码和演示,请参阅此jsFiddle.

  • 哇..只是哇..感谢Gyrocode ..完全有道理,但是你怎么在世界上想出这一个?最后一个问题..如何在同一行添加第二个自定义按钮? (3认同)
  • @ToddT,有同样的问题,并通过检查扩展的源代码找出它.jQuery DataTables是一个优秀的库,但我希望这部分文档更好. (2认同)

Dim*_* L. 7

就我而言,我只是添加了这些样式:

.dataTables_length,.dataTables_filter {
    margin-left: 10px;
    float: right;
}
Run Code Online (Sandbox Code Playgroud)