【发布时间】:2013-10-04 20:21:42
【问题描述】:
这是我的自定义解析器:
$.tablesorter.addParser({
id: "customParser",
is: function (stringValue) {
return false;
},
format: function (stringValue) {
var stringValueParts = stringValue.split("-");
var numericPartOfStringValue = parseInt(stringValueParts[2]);
return numericPartOfStringValue ;
},
type: 'numeric'
});
stringValue 将具有如下值:
- ABC-DE-1
- ABC-DE-10
- ABC-DE-100
- ABC-DE-101
- ABC-DE-1000
这是我设置表格排序器并添加自定义排序解析器的代码:
$(function() {
$("#dataTable").tablesorter({
headers: {
3: {
sorter: 'customParser'
}
}
});
});
我确实添加了一个 console.log(numericPartOfStringValue) 并且所有的数字都被写入了控制台,所以看起来解析器正在做它应该做的事情。
那么我想要发生什么?
我希望我的值按字符串的数字部分排序,如下所示:
- ABC-DE-1
- ABC-DE-10
- ABC-DE-100
- ABC-DE-101
- ABC-DE-1000
实际发生了什么?
值是这样排序的:
- ABC-DE-1
- ABC-DE-10
- ABC-DE-100
- ABC-DE-1000
- ABC-DE-101
我还尝试了什么?
我在我的 html 中添加了以下内容,但没有任何区别:
<th class="{sorter: 'CustomParser'}">
String Value Column
</th>
最后:
这是表格单元格中的示例值:
<td>
<span class="badge">ABC-DE-1</span>
</td>
【问题讨论】:
-
您使用的是 DataTables 还是 tablesorter?如果你想继续使用 tablesorter,试试我的fork of tablesorter,它默认使用字母数字排序。所以在你的情况下不需要特殊的解析器。
-
我同时使用了用于分页的数据表和用于排序的表排序器。问题是我的自定义表格排序器解析器无法使用数据表分页。我不知道为什么我不使用数据表排序,所以我现在已将代码切换为使用数据表排序。我在数据表中实现了一个自定义解析器,现在一切正常。因此,这个问题现在是多余的。感谢您的关注。
标签: jquery tablesorter