TableSorter无法识别数字

时间:2014-01-06 09:59:06

标签: javascript jquery sorting tablesorter

我有这两个例子,它们使用相同的代码但不同的tablesorter源。然而,其中一个工作,而另一个没有。

$("table").tablesorter(); 

http://jsfiddle.net/lightheaded/x78cd/(不起作用)

http://jsfiddle.net/lightheaded/RYL54/(有效)

首先按百分比排序,然后按用户排序。但是它不会将第二个数字识别为数字。我的网站上有类似的情况。可能是什么问题?我在我的网站上也使用了2.14.4分钟。

2 个答案:

答案 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' }
        }
    });
});

Demo here

答案 1 :(得分:1)

Tablesorter尝试自动检测表格单元格的内容。在这种情况下,它是查找文本而不是百分比或数字值。

第一个演示是使用不使用字母数字排序的原始tablesorter,因此它只能对文本块进行排序。查看this updated demo,其中添加了包含此数据的行:

<tr><td>10% coverage (1.0 million users)</td></tr>

10%以升序排列在100%之上 - 而不是您所期望的。

第二个演示使用的是tablesorter的更新版本,它使用字母数字排序。它将文本拆分为块,并能够按预期对内容进行排序。这是updated demo,其中包含上述行。

如果您“需要”使用原始的tablesorter,请使用@SalmanA提供的解析器。