tablesorter.js 实现中文排序及自定义列配置详解

作者:异步漫步

时间:2026-10-21

浏览:464

本文介绍如何修改 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}}});

如需获取更多使用示例,建议访问官方网站进行深入探索。

以上内容为本文的全部分享,希望能对读者的学习有所帮助,同时也欢迎持续关注本站以获取更多技术支持。

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章