我目前正在为我的项目表使用jQuery Tablesorter,我想让它处理自定义排序,以便:
A, AA, B, BB, 1, 2
将排序为:
1, 2, A, B, AA, BB
我可以在初始化过程中通过textSorter
选项实现这一点,如下所示:
$(".tablesorter").tablesorter({
textSorter: {
3: function (a, b) {
return b.length > a.length ? -1 : b.length < a.length ? 1 : b.toString() > a.toString() ? -1 : 1;
}
}
}
或者更清楚:
if (b.length > a.length) {
return -1;
} else if (b.length < a.length) {
return 1;
} else {
if (b.toString() > a.toString()) {
return -1;
} else {
return 1;
}
}
但我想要做的是能够在指定类名时将其作为默认排序,类似于我能够将sorter-floats
作为clas添加到任何th
像这样<th class='sorter-floats'>COL NAME</th>
并使用addParser
方法来处理解析这样排序的值:
$.tablesorter.addParser({
id: "floats",
is: function (s) {
return false;
},
format: function (s) {
return $.tablesorter.formatFloat(s.replace(/,/g, ''));
},
type: "numeric"
});
我无法在tablesorter插件中找到允许以这种方式进行自定义排序的任何方法。这是可能的,还是我已经使用过的最佳选择?
答案 0 :(得分:1)
Tablesorter未设置为允许textSorter
option包含除整体函数以外的任何内容,或包含从零开始的列索引的对象。
我刚刚使用补丁更新了主分支,该补丁还允许添加列类名(demo):
$(function() {
$("table").tablesorter({
theme: 'blue',
textSorter: {
'.sorter-float': function(a, b) {
return b.length > a.length ? -1 :
b.length < a.length ? 1 :
b.toString() > a.toString() ? -1 : 1;
}
}
});
});
我还没有决定下一个版本何时可用,但不会太长。