You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在页面加载及选默认项时隐藏DataTables表格数据仅显示表头?

解决DataTables初始仅显示表头及筛选时清空表格的问题

核心思路

  • 初始化表格时隐藏所有数据行,只保留表头展示
  • 针对筛选条件做分支处理:选中“Location”时清空表格数据;其他条件下恢复原始数据并执行筛选

具体代码修改

1. 表格初始化调整

在DataTables初始化时,通过initComplete回调完成初始隐藏行和原始数据备份:

var table = $('#example').DataTable({
  initComplete: function() {
    // 初始隐藏所有数据行
    this.api().rows().nodes().to$().hide();
    // 备份原始数据,避免筛选后数据丢失
    window.originalData = this.api().rows().data().toArray();
  }
});

2. 筛选逻辑优化

修改下拉框的change事件处理函数,添加清空表格的逻辑:

$('#filter').on('change', function() {
  var filterVal = $(this).val();
  var api = table.api();

  if (filterVal === 'Location') {
    // 清空表格tbody内容,仅保留表头
    api.clear().draw();
  } else {
    // 恢复原始数据后执行筛选
    api.clear().rows.add(window.originalData).draw();
    api.column(2).search(filterVal).draw();
  }
});

完整可运行代码

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>DataTables Test</title>
  <link rel="stylesheet" href="https://cdn.datatables.net/1.13.4/css/jquery.dataTables.min.css">
  <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
  <script src="https://cdn.datatables.net/1.13.4/js/jquery.dataTables.min.js"></script>
</head>
<body>
  <select id="filter">
    <option value="Location">Location</option>
    <option value="London">London</option>
    <option value="New York">New York</option>
    <option value="Paris">Paris</option>
  </select>
  <table id="example" class="display" style="width:100%">
    <thead>
      <tr>
        <th>Name</th>
        <th>Position</th>
        <th>Office</th>
        <th>Age</th>
        <th>Start date</th>
        <th>Salary</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td>Tiger Nixon</td>
        <td>System Architect</td>
        <td>London</td>
        <td>61</td>
        <td>2011/04/25</td>
        <td>$320,800</td>
      </tr>
      <tr>
        <td>Garrett Winters</td>
        <td>Accountant</td>
        <td>Tokyo</td>
        <td>63</td>
        <td>2011/07/25</td>
        <td>$170,750</td>
      </tr>
      <tr>
        <td>Ashton Cox</td>
        <td>Junior Technical Author</td>
        <td>San Francisco</td>
        <td>66</td>
        <td>2009/01/12</td>
        <td>$86,000</td>
      </tr>
      <tr>
        <td>Cedric Kelly</td>
        <td>Senior Javascript Developer</td>
        <td>Edinburgh</td>
        <td>22</td>
        <td>2012/03/29</td>
        <td>$433,060</td>
      </tr>
      <tr>
        <td>Airi Satou</td>
        <td>Accountant</td>
        <td>Tokyo</td>
        <td>33</td>
        <td>2008/11/28</td>
        <td>$162,700</td>
      </tr>
    </tbody>
  </table>

  <script>
    $(document).ready(function() {
      var table = $('#example').DataTable({
        initComplete: function() {
          this.api().rows().nodes().to$().hide();
          window.originalData = this.api().rows().data().toArray();
        }
      });

      $('#filter').on('change', function() {
        var filterVal = $(this).val();
        var api = table.api();

        if (filterVal === 'Location') {
          api.clear().draw();
        } else {
          api.clear().rows.add(window.originalData).draw();
          api.column(2).search(filterVal).draw();
        }
      });
    });
  </script>
</body>
</html>

内容的提问来源于stack exchange,提问作者magicsinger

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 17:33:26