我有这两个例子,它们使用相同的代码但不同的tablesorter源。然而,其中一个工作,而另一个没有。
$("table").tablesorter();
http://jsfiddle.net/lightheaded/x78cd/(不起作用)
http://jsfiddle.net/lightheaded/RYL54/(有效)
首先按百分比排序,然后按用户排序。但是它不会将第二个数字识别为数字。我的网站上有类似的情况。可能是什么问题?我在我的网站上也使用了2.14.4分钟。
答案 0 :(得分:2)
升级到更新版本的表格分类器。最新版本似乎从字符串中解析出令牌,例如 99%覆盖率(1208万用户)和 99%覆盖率(1020万用户)并逐个比较它们包含多个数字的数字仍然按预期排序(我们在上面的例子中 10 与 12 相比)。
或者:您可以创建一个自定义解析器来规范百分比和用户;并使用它:
$.tablesorter.addParser({
id: 'percentThenUsers',
is: function (s) {
return false;
},
format: function (s) {
// "99% coverage (12.08 million users)" gets converted to
// "1099 1012.08" which can then be sorted as text
var m = s.replace(/[^\d\.]/g, " ").replace(/ +/g, " ").split(" ");
return (+m[0] + 1000) + " " + (+m[1] + 1000);
},
type: 'text'
});
$(function () {
$("table").tablesorter({
debug: true,
headers: {
0: { sorter: 'percentThenUsers' }
}
});
});
答案 1 :(得分:1)
Tablesorter尝试自动检测表格单元格的内容。在这种情况下,它是查找文本而不是百分比或数字值。
第一个演示是使用不使用字母数字排序的原始tablesorter,因此它只能对文本块进行排序。查看this updated demo,其中添加了包含此数据的行:
<tr><td>10% coverage (1.0 million users)</td></tr>
10%
以升序排列在100%
之上 - 而不是您所期望的。
第二个演示使用的是tablesorter的更新版本,它使用字母数字排序。它将文本拆分为块,并能够按预期对内容进行排序。这是updated demo,其中包含上述行。
如果您“需要”使用原始的tablesorter,请使用@SalmanA提供的解析器。