0

这似乎应该很容易做到......

<table>
    <tr><td>Name</td><td>Number</td></tr>
    <tr><td>Joe Bloggs</td><td>10</td></tr>
    <tr><td>Joe Adams</td><td>12</td></tr>
</table>

使用jquery.tablesorter, 单击名称列时,我希望它按第一列的姓氏部分排序,而不是默认的名字。

我知道这可以通过先从 PHP 反转来完成Adams, Joe;但这看起来很可怕,而且看起来很笨重。

这可以通过自定义排序来完成吗?

4

1 回答 1

0

首先,您应该听取 Rory 和 Sargiv 的两条评论的建议,因为它会造成令人困惑的行为,但如果您仍然坚持这样做,您可以添加一个自定义解析器,如下所示

$.tablesorter.addParser({
        // set a unique id
        id: 'surname',
        is: function(s) {
            // return false so this parser is not auto detected
            return false;
        },
        format: function(s) {

            var parts = s.split(" ");
           // alert(parts[1]);
            // return surname here
            return parts[1];
        },
        // set type, either numeric or text
        type: 'text'
    });

然后将其添加为名称列的解析器,如下所示

$('table').tablesorter({
    // include zeba widgets
    widgets: ['zebra'],
    headers: {
                0: {
                    sorter:'surname'
                }
            }

});

这是工作小提琴http://jsfiddle.net/joycse06/2TZAn/1/,通过单击名称标题进行检查,忽略其他字段,它们在那里是因为我编辑了现有的小提琴。

这是自定义解析器上的插件页面http://tablesorter.com/docs/example-parsers.html

于 2012-05-17T09:01:36.570 回答