DataTables自定义分页设置教程
时间:2025-10-07 17:09:33 416浏览 收藏
想自定义 DataTables 表格的分页大小吗?本教程为你详细讲解如何使用 DataTables 的 `lengthMenu` 选项,轻松实现自定义分页条目数,例如将默认的10, 25, 50, 100修改为15, 30, 50,甚至添加“所有”选项,让用户自由选择每页显示的数据量。通过示例代码,你将学会如何配置 `lengthMenu` 数组,包括数值和对应的显示文本,从而优化表格的数据呈现方式,显著提升用户体验。了解 DataTables 自定义分页,让你的表格更具灵活性和实用性!解决大数据量表格展示难题,快来学习吧!

理解 DataTables 的分页机制
DataTables 提供了一个内置的下拉菜单,允许用户选择每页显示的数据条目数。默认情况下,这些选项通常是10、25、50和100。然而,在许多应用场景中,开发者需要根据实际需求提供自定义的选项,例如15、30、50,甚至是一个显示所有条目的选项。DataTables 通过 lengthMenu 配置项提供了这种灵活性。
使用 lengthMenu 自定义分页选项
lengthMenu 选项是一个数组,它接受两种形式的参数:
- 纯数字数组: [10, 25, 50, -1],其中 -1 代表“所有”条目。
- 嵌套数组: [[10, 25, 50, -1], [10, 25, 50, "All"]]。第一个子数组定义了实际的数值,第二个子数组定义了在下拉菜单中显示的文本标签。
要将分页大小更改为 15, 30, 50 和 "所有",我们需要使用嵌套数组的形式来同时定义数值和对应的显示文本。
示例代码:集成自定义分页选项
假设您已有一个 DataTables 实例,并已配置了页脚搜索功能,如下所示:
<!DOCTYPE html>
<html>
<head>
<title>DataTables 自定义分页大小</title>
<link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/1.10.25/css/jquery.dataTables.min.css">
<script type="text/javascript" charset="utf8" src="https://code.jquery.com/jquery-3.5.1.js"></script>
<script type="text/javascript" charset="utf8" src="https://cdn.datatables.net/1.10.25/js/jquery.dataTables.min.js"></script>
</head>
<body>
<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>Edinburgh</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>
<tr><td>Brielle Williamson</td><td>Integration Specialist</td><td>New York</td><td>61</td><td>2012/12/02</td><td>$372,000</td></tr>
<tr><td>Herrod Chandler</td><td>Sales Assistant</td><td>San Francisco</td><td>59</td><td>2012/08/06</td><td>$137,500</td></tr>
<tr><td>Rhona Davidson</td><td>Integration Specialist</td><td>Tokyo</td><td>55</td><td>2010/10/14</td><td>$327,900</td></tr>
<tr><td>Colleen Hurst</td><td>Javascript Developer</td><td>San Francisco</td><td>39</td><td>2009/09/15</td><td>$205,500</td></tr>
<tr><td>Sonya Frost</td><td>Software Engineer</td><td>Edinburgh</td><td>23</td><td>2008/12/13</td><td>$103,600</td></tr>
<tr><td>Jena Gaines</td><td>Office Manager</td><td>London</td><td>30</td><td>2008/12/19</td><td>$90,560</td></tr>
<tr><td>Quinn Flynn</td><td>Support Engineer</td><td>Edinburgh</td><td>22</td><td>2013/03/03</td><td>$342,000</td></tr>
<tr><td>Charde Marshall</td><td>Regional Director</td><td>San Francisco</td><td>36</td><td>2008/10/16</td><td>$470,600</td></tr>
<tr><td>Haley Kennedy</td><td>Senior Marketing Designer</td><td>London</td><td>43</td><td>2012/12/18</td><td>$313,500</td></tr>
<tr><td>Tatyana Fitzpatrick</td><td>Regional Director</td><td>London</td><td>19</td><td>2010/03/17</td><td>$385,750</td></tr>
<tr><td>Michael Silva</td><td>Marketing Designer</td><td>London</td><td>66</td><td>2012/11/27</td><td>$198,500</td></tr>
<tr><td>Paul Byrd</td><td>Chief Financial Officer (CFO)</td><td>New York</td><td>64</td><td>2010/06/09</td><td>$725,000</td></tr>
<tr><td>Gloria Little</td><td>Systems Administrator</td><td>New York</td><td>59</td><td>2009/04/10</td><td>$237,500</td></tr>
<tr><td>Bradley Greer</td><td>Software Engineer</td><td>London</td><td>41</td><td>2012/10/13</td><td>$132,000</td></tr>
<tr><td>Dai Rios</td><td>Personnel Lead</td><td>Edinburgh</td><td>35</td><td>2012/09/26</td><td>$217,500</td></tr>
<tr><td>Jenette Caldwell</td><td>Development Lead</td><td>New York</td><td>30</td><td>2011/09/03</td><td>$345,000</td></tr>
<tr><td>Yuri Berry</td><td>Chief Marketing Officer (CMO)</td><td>New York</td><td>40</td><td>2009/06/25</td><td>$675,000</td></tr>
<tr><td>Caesar Vance</td><td>Pre-Sales Support</td><td>New York</td><td>21</td><td>2011/12/12</td><td>$106,450</td></tr>
<tr><td>Doris Wilder</td><td>Sales Assistant</td><td>Sydney</td><td>23</td><td>2009/09/20</td><td>$85,600</td></tr>
<tr><td>Angelica Ramos</td><td>Chief Executive Officer (CEO)</td><td>London</td><td>47</td><td>2009/10/09</td><td>$1,200,000</td></tr>
<tr><td>Gavin Joyce</td><td>Developer</td><td>Edinburgh</td><td>42</td><td>2010/12/22</td><td>$92,575</td></tr>
<tr><td>Jennifer Chang</td><td>Regional Director</td><td>Singapore</td><td>28</td><td>2010/11/14</td><td>$357,650</td></tr>
<tr><td>Brenden Wagner</td><td>Software Engineer</td><td>San Francisco</td><td>28</td><td>2011/06/07</td><td>$206,850</td></tr>
<tr><td>Fiona Green</td><td>Chief Operating Officer (COO)</td><td>San Francisco</td><td>48</td><td>2010/03/11</td><td>$850,000</td></tr>
<tr><td>Shad Decker</td><td>Regional Director</td><td>Edinburgh</td><td>51</td><td>2008/11/13</td><td>$183,000</td></tr>
</tbody>
<tfoot>
<tr>
<th>Name</th>
<th>Position</th>
<th>Office</th>
<th>Age</th>
<th>Start date</th>
<th>Salary</th>
</tr>
</tfoot>
</table>
<script type="text/javascript">
$(document).ready(function() {
// Setup - add a text input to each footer cell
$('#example tfoot th').each( function () {
var title = $(this).text();
$(this).html( '<input type="text" placeholder="搜索 '+title+'" />' ); // 更改placeholder文本
} );
// DataTable 初始化
var table = $('#example').DataTable({
// 在这里添加 lengthMenu 配置
"lengthMenu": [[15, 30, 50, -1], [15, 30, 50, "所有"]],
initComplete: function () {
// Apply the search
this.api().columns().every( function () {
var that = this;
$( 'input', this.footer() ).on( 'keyup change clear', function () {
if ( that.search() !== this.value ) {
that
.search( this.value )
.draw();
}
} );
} );
}
});
} );
</script>
</body>
</html>在上面的代码中,关键的修改是 DataTable 初始化对象中的 lengthMenu 属性:
"lengthMenu": [[15, 30, 50, -1], [15, 30, 50, "所有"]]
- [15, 30, 50, -1]:这个子数组定义了实际的每页显示条目数值。-1 是 DataTables 的一个特殊值,表示显示所有条目。
- [15, 30, 50, "所有"]:这个子数组定义了在下拉菜单中与上述数值对应的显示文本。例如,当选择 -1 时,下拉菜单中会显示 "所有"。
通过这种方式,DataTables 会渲染一个包含 "15", "30", "50", "所有" 选项的下拉菜单,让用户可以灵活选择每页显示的条目数。
注意事项
- 性能影响: 当表格数据量非常大时,选择 "所有" 条目可能会导致浏览器性能下降,因为所有数据都需要一次性加载到 DOM 中。在设计时应考虑这一点,并权衡用户体验和性能。
- 默认选中项: lengthMenu 仅仅是定义了可用的选项。要设置 DataTables 初始时每页显示的条目数,您需要使用 pageLength 选项。例如,"pageLength": 30 会在初始化时默认显示 30 条数据。
- 国际化: 如果您的应用需要支持多语言,"所有" 这样的文本也应该通过 DataTables 的国际化配置进行管理,而不是硬编码。例如,可以使用 language.lengthMenu 选项。
- 与其他选项的兼容性: lengthMenu 选项与 DataTables 的其他核心功能(如搜索、排序、分页等)完全兼容,可以无缝集成。
总结
通过简单地配置 lengthMenu 选项,DataTables 提供了强大而灵活的方式来定制表格的分页大小。无论是需要特定的数值选项,还是提供显示所有条目的功能,lengthMenu 都能满足您的需求。正确地使用此选项不仅能提升用户的数据浏览体验,还能使您的表格更加适应不同的业务场景。
终于介绍完啦!小伙伴们,这篇关于《DataTables自定义分页设置教程》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~golang学习网公众号也会发布文章相关知识,快来关注吧!
-
502 收藏
-
501 收藏
-
501 收藏
-
501 收藏
-
501 收藏
-
274 收藏
-
232 收藏
-
339 收藏
-
359 收藏
-
342 收藏
-
385 收藏
-
192 收藏
-
360 收藏
-
149 收藏
-
477 收藏
-
313 收藏
-
169 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 立即学习 543次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 立即学习 516次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 立即学习 500次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 立即学习 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 立即学习 485次学习