如何删除 jQuery DataTables 插件添加的搜索栏和页脚?

Posted

技术标签:

【中文标题】如何删除 jQuery DataTables 插件添加的搜索栏和页脚?【英文标题】:How can I remove the search bar and footer added by the jQuery DataTables plugin? 【发布时间】:2018-01-06 11:59:30 【问题描述】:

我正在使用jQuery DataTables。

我想删除默认添加到表格中的搜索栏和页脚(显示有多少行可见)。基本上,我只想使用这个插件进行排序。这个可以吗?

【问题讨论】:

您可以有效地使用sDom,如此处所述 - ***.com/a/53885264/5729813 使用dom: 'lrtip'选项 【参考方案1】:

对于 DataTables >=1.10,使用:

$('table').dataTable(searching: false, paging: false, info: false);

如果您仍然希望能够使用此插件的.search() 功能,则需要使用dom 设置“隐藏”搜索栏html

$('table').dataTable(dom: 'lrt');

默认为lfrtip<"H"lfr>t<"F"ip>(当jQueryUI 为真时),f char 表示 dom 中的过滤器(搜索)html,ip 表示信息和分页(页脚)。

对于 DataTables ,使用:

$('table').dataTable(bFilter: false, bInfo: false);

或使用纯 CSS:

.dataTables_filter, .dataTables_info  display: none; 

【讨论】:

与@antpaw 评论一样好,并且似乎在大多数情况下都有效,但如果每列都在进行过滤,它就不起作用,就像在这个例子中一样:datatables.net/release-datatables/extras/FixedColumns/…。请注意! @JanisPeisenieks 示例 URL 已损坏:datatables.net/extensions/fixedcolumns 我不明白为什么这被接受,因为它没有回答问题。问题是删除搜索栏和页脚,而不是完全禁用搜索。 要完全删除页脚,您必须设置 paging:falseinfo:false ,而不仅仅是 paging:false 添加到@user1563544 的评论中,有没有办法只隐藏搜索栏而不禁用该功能? (除了 CSS 技巧?)【参考方案2】:

查看http://www.datatables.net/examples/basic_init/filter_only.html 以获取要显示/隐藏的功能列表。

你想要的是将“bFilter”和“bInfo”设置为false;

$(document).ready(function() 
    $('#example').dataTable( 
        "bPaginate": false,
        "bFilter": false,
        "bInfo": false
                  );
 );

【讨论】:

@Eric 谢谢它为我工作,但我只想显示“bPaginate”我不想显示“binfo”如果我做了“bInfo”= false 和“我该如何实现” bPaginate"= true 然后两者都显示 在最新版本的DataTables中只是paging: false, info: false【参考方案3】:

你也可以通过设置sDom:http://datatables.net/usage/options#sDom根本不绘制页眉或页脚

'sDom': 't' 

将只显示表格,不显示页眉或页脚或任何内容。

这里有一些讨论:http://www.datatables.net/forums/discussion/2722/how-to-hide-empty-header-and-footer/p1

【讨论】:

这应该添加到蚁爪的答案中。这有效地隐藏了在传递 "bFilter": false, "bInfo": false 时仍然保留的过滤器和信息占位符 div。 这会删除页脚中的分页。我认为这不是一个好习惯。 现在称为“dom”,您可以使用此选项进行更多控制。见datatables.net/reference/option/dom 这其实是正确的答案。涉及 css 和 js 调整的其他答案都是 hack。如果您想正确使用 DataTables,您可以这样做。例如,如果您想显示除搜索框以外的所有位和部分(分页、页长等),您可以添加一个值为ltiprdom 属性,参见datatables.net/reference/option/dom跨度> 【参考方案4】:

如果您使用自定义过滤器,您可能想隐藏搜索框但仍想启用过滤器功能,所以bFilter: false 不是办法。请改用dom: 'lrtp',默认为'lfrtip'。文档:https://datatables.net/reference/option/dom

【讨论】:

【参考方案5】:
var table = $("#datatable").DataTable(
   "paging": false,
   "ordering": false,
   "searching": false
);

【讨论】:

【参考方案6】:

一种快速而肮脏的方法是找出页脚的类并使用 jQuery 或 CSS 将其隐藏:

$(".dataTables_info").hide();

【讨论】:

【参考方案7】:

如果您使用的是主题滚轮:

.dataTables_wrapper .fg-toolbar  display: none; 

【讨论】:

+1 谢谢,这为我指明了正确的方向。我也不想隐藏页眉,所以我只想要页脚。 ui-corner-bl 和 ui-corner-br 类仅适用于页脚,所以我使用其中任何一个来获取页脚包装............ $(".ui-corner-bl").hide( );【参考方案8】:

正如@Scott Stafford 所说,sDOM 是显示、隐藏或重新定位构成数据表的元素的最合适的属性。我认为sDOM 现在已经过时了,这个属性的实际补丁现在是dom

此属性也允许为元素设置一些类或 id,因此您可以更轻松地进行时尚。

在此处查看官方文档:https://datatables.net/reference/option/dom

这个例子只显示表格:

$('#myTable').DataTable(
    "dom": 't'
);

【讨论】:

【参考方案9】:
<script>
$(document).ready(function() 
    $('#nametable').DataTable(
        "bPaginate": false,
        "bFilter": false,
        "bInfo": false
    );
);
</script>

在您的数据表构造函数中

https://datatables.net/forums/discussion/20006/how-to-remove-cross-icon-in-search-box

【讨论】:

此答案没有任何文档的链接,您也没有提供有效的答案【参考方案10】:

这可以通过简单地更改配置来完成:

$('table').dataTable(
      paging: false, 
      info: false
 );

但是要隐藏空页脚;这段代码可以解决问题:

 $('table').dataTable(
      paging: false, 
      info: false,

      //add these config to remove empty header
      "bJQueryUI": true,
      "sDom": 'lfrtip'

);

【讨论】:

【参考方案11】:

在这里您可以将sDom 元素添加到您的代码中,顶部搜索栏是隐藏的。

$(document).ready(function() 
    $('#example').dataTable( 
"sDom": '<"top">rt<"bottom"flp><"clear">'
  );
 );

【讨论】:

【参考方案12】:

提醒您不能在同一个 &lt;table&gt; 元素上初始化 DataTable 两次。

如果您遇到同样的问题,那么您可以在像这样在 HTML &lt;table&gt; 上初始化 DataTable 时设置 searchingpaging false

 $('#tbl').DataTable(
    searching: false, 
    paging: false,
    dom: 'Bfrtip',
    buttons: [
       'copy', 'csv', 'excel', 'pdf', 'print'
    ]
 );

【讨论】:

【参考方案13】:

你可以通过 css 隐藏它们:

#example_info, #example_filterdisplay: none

【讨论】:

不是“错”,只是不同。这取决于您是要隐藏所有实例(按类,如您的答案)还是特定实例(按 ID,如我的)。【参考方案14】:

您可以使用 sDom 属性。代码看起来像这样。

$(document).ready(function() 
    $('#example').dataTable( 
        'sDom': '"top"i'
                  );
 );

它隐藏了搜索和寻呼框。

【讨论】:

【参考方案15】:

从 DataTables 1.10.5 开始,现在可以定义初始化 使用 HTML5 data-* 属性的选项。

-dataTables documentation: HTML5 data-* attributes - table options

因此您可以在table 上指定data-searching="false" data-paging="false" data-info="false"。例如,此表将不允许搜索、应用分页或显示信息块:

<table id="example" class="display"  data-searching="false" data-paging="false" data-info="false">
    <thead>
        <tr>
            <th>Name</th>
            <th data-orderable="false">Avatar</th>
            <th>Start date</th>
            <th>Salary</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>Tiger Nixon</td>
            <td><img src="https://www.gravatar.com/avatar/8edcff60cdcca2ad650758fa524d4990?s=64&amp;d=identicon&amp;r=PG"  style="width: 64px; height: 64px; visibility: visible;"></td>
            <td>2011/04/25</td>
            <td>$320,800</td>
        </tr>
        <tr>
            <td>Garrett Winters</td>
            <td><img src="https://www.gravatar.com/avatar/98fe9834dcca2ad650758fa524d4990?s=64&amp;d=identicon&amp;r=PG"  style="width: 64px; height: 64px; visibility: visible;"></td>
            <td>2011/07/25</td>
            <td>$170,750</td>
        </tr>
        ...[ETC]...
    </tbody>
</table>

见a working example at https://jsfiddle.net/jhfrench/17v94f2s/。

这种方法的优点是它允许您进行标准的 dataTables 调用(即$('table.apply_dataTables').DataTable()),同时能够逐个表配置 dataTables 选项。

【讨论】:

【参考方案16】:

如果您只想隐藏搜索表单,例如因为您有列输入过滤器,或者可能是因为您已经有一个能够从表中返回结果的 CMS 搜索表单,那么您所要做的就是检查表单并获取它的 id - (在撰写本文时,它看起来像这样[tableid]-table_filter.dataTables_filter)。然后只需执行[tableid]-table_filter.dataTables_filterdisplay:none; 即可保留数据表的所有其他功能。

【讨论】:

【参考方案17】:

这对我有用#table is a Id of table

$('#table').dataTable(searching: false, paging: false, info: false);

【讨论】:

【参考方案18】:

它对我有用;

您可以使用 table 上的此属性删除搜索栏:data-searching="false"

【讨论】:

这个“新”答案所做的唯一事情就是重复一半其他答案已经说过的话,包括the accepted answer。【参考方案19】:

我通过为页脚分配一个 id 并使用 css 设置样式来做到这一点:

    <table border="1" class="dataTable" id="dataTable_$dtoItem.key" >
     <thead>
        <tr>
            <th></th>

        </tr>
    </thead>
 <tfoot>
    <tr>
            <th id="FooterHidden"></th>
    </tr>
</tfoot>
<tbody>

    <tr>

                <td class="copyableField"></td>

    </tr>
 </tbody>
</table>

然后使用 css 进行样式设置:

#FooterHidden
   display: none;

如上所述的方法对我不起作用。

【讨论】:

【参考方案20】:

我认为最简单的方法是:

<th data-searchable="false">Column</th>

你可以只编辑你要修改的表格,不改变常用的CSS或JS。

【讨论】:

【参考方案21】:

没有过滤输入控件。 (https://datatables.net/reference/option/dom)

    /* Results in:
        length
        processing
        table
        information
        pagination
    */
    $('#example').dataTable( 
      "dom": 'lrtip'
     );

【讨论】:

以上是关于如何删除 jQuery DataTables 插件添加的搜索栏和页脚?的主要内容,如果未能解决你的问题,请参考以下文章

DataTables jQuery插件服务器端处理,通过ajax删除后智能分页

jQuery 插件 DataTables:如何突出显示当前搜索文本?

如何在DataTables 1.10中使用JQuery DataTables“input”插件

如何更改 DataTables jQuery 插件的分页按钮数量

如何从 Datatables jQuery 插件中提取过滤后的数据?

如何使用 jQuery DataTables 插件实现服务器端处理?