tablesorter.js 实现中文排序及自定义列配置详解
本文介绍如何修改 tablesorter.js 源码以支持中文排序,并演示如何在 HTML 表格中应用该插件。内容涵盖基础表格构建、禁用特定列排序以及通过 addParser 实现自定义排序逻辑,帮助开发者解决常见表格排序问题。
近期在项目开发中,针对表格排序功能进行了测试与整理,现将具体实现步骤总结如下。
修改源码以支持中文排序
第一步,从官方网站下载 tablesorter.js 库文件。需要注意的是,该库默认版本并不支持中文字符的排序功能,因此需要对源代码进行适当修改。
以下是相关源码的片段展示。
function sortText(a, b) {
return ((a < b) ? -1 : ((a > b) ? 1 : 0));
};
function sortTextDesc(a, b) {
return ((b < a) ? -1 : ((b > a) ? 1 : 0));
};
修改后的代码实现如下。
function sortText(a,b) {
return a.localeCompare(b);
};
function sortTextDesc(a,b) {
return b.localeCompare(a);
};
经过上述修改,生成的 JavaScript 文件即可正常支持中文内容的排序操作。
表格构建与基础排序配置
第二步,构建 HTML 表格结构,具体格式参考以下示例。
<table>
<thead>
<tr><th></th></tr>
</thead>
<tr><td></td></tr>
</table>
<html>
<head>
<title>jquery.tablesorter</title>
<script language="JavaScript" type="text/javascript" src="jquery-1.3.2.min.js"></script>
<script type="text/javascript" src="/manage/plugin/tablesorter/tablesorter.js"></script>
<link rel="stylesheet" href="/manage/plugin/tablesorter/blue/style.css type=" rel="external nofollow" text/css" />
<script type="text/javascript">
$("#mytable").tablesorter();
</script>
</head>
<body>
<table id="mytable" border="1" class="tablesorter">
<thead>
<tr>
<th class="header">First Name</th>
<th class="header">Last Name</th>
<th class="header">Age</th>
<th class="header">Total</th>
<th class="header">Discount</th>
<th class="header">Date</th>
<th class="header">State</th>
</tr>
</thead>
<tr>
<td>Peter</td>
<td>Parker</td>
<td>28</td>
<td>$9.99</td>
<td>20%</td>
<td>Jul 6, 2006 8:14 AM</td>
<td>已审核</td>
</tr>
<tr>
<td>John</td>
<td>Hood</td>
<td>33</td>
<td>$19.99</td>
<td>25%</td>
<td>Dec 10, 2002 5:14 AM</td>
<td>已审核</td>
</tr>
<tr>
<td>Clark</td>
<td>Kent</td>
<td>18</td>
<td>$15.89</td>
<td>44%</td>
<td>Jan 12, 2003 11:14 AM</td>
<td>已作废</td>
</tr>
<tr>
<td>Bruce</td>
<td>Almighty</td>
<td>45</td>
<td>$153.19</td>
<td>44%</td>
<td>Jan 18, 2001 9:12 AM</td>
<td>待审核</td>
</tr>
<tr>
<td>Bruce</td>
<td>Evans</td>
<td>22</td>
<td>$13.19</td>
<td>11%</td>
<td>Jan 18, 2007 9:12 AM</td>
<td>已生效</td>
</tr>
</table>
</body>
</html>
页面渲染后的效果如图所示。

用户点击表格头部(thead)时,即可触发排序功能。
注意事项如下:
列排序控制与自定义排序实现
如果希望禁用第五列和第六列的排序功能,可参考以下代码配置。
$("#mytable").tablesorter({headers:{4:{sorter:false},5:{sorter:false}}});
同时,建议移除对应列的 CSS 样式,以优化视觉体验。
若需对第五列应用自定义排序规则,而第六列保持不排序状态,可使用以下代码。
$.tablesorter.addParser({
id: "grade", //指定一个唯一的ID
is: function(s){
return false;
},
format: function(s){
return s.toLowerCase().replace(/已作废/,1).replace(/待审核/,2).replace(/已审核/,3).replace(/已生效/,4); //将中文换成数字
},
type: "numeric" //按数值排序
});
$("#mytable").tablesorter({headers:{4:{sorter:"grade"},5:{sorter:false}}});
如需获取更多使用示例,建议访问官方网站进行深入探索。
以上内容为本文的全部分享,希望能对读者的学习有所帮助,同时也欢迎持续关注本站以获取更多技术支持。
D3.js 比例尺与坐标轴的配置详解
2026-11-05 16:54:46
JavaScript怎么遍历对象的Symbol键和不可枚举属性
2026-11-05 13:13:39
封装一个健壮的JS字符串判空工具函数
2026-11-05 12:16:14
JavaScript合并数组的三种常用方法:concat、扩展运算符与push
2026-11-05 11:22:29
JavaScript立即执行函数(IIFE)是什么及基本语法
2026-11-05 10:51:19
