jquery tablesorter:确定列的排序顺序

时间:2015-01-08 22:22:47

标签: jquery tablesorter

http://tablesorter.com是否可以根据排序是升序还是降序对不同的值进行排序?

我看到如何使用解析器(即:http://code-cocktail.in/hidden-value-sorting-in-jquery-tablesorter-plugin/)基于任意数据返回单元格的排序值,因此在不同情况下返回不同的值似乎很简单。

我正在敲打的是我在解析时似乎无法确定排序顺序。看起来我可以通过以下方式在请求排序时重新解析单元格:

 $(".tablesorter").bind("sortStart",function() { 
        $(".tablesorter").trigger("update");
 });

...但看起来就像在“sortStart”点那样排序的顺序是未知的,因此解析器不能根据该列的排序顺序提供不同的值。

这可能吗?谢谢: - )

1 个答案:

答案 0 :(得分:1)

要使以下代码生效,您需要使用我的fork of tablesorter,其中包含与原始版本不兼容的css,小部件和插件。


这有点类似于this Stackoverflow question,只是它允许使用两个不同的值对一列进行排序(两个答案都可以使用不同的方法很好地工作)。

在升序排序期间使用一个值需要进行微小修改,在降序排序期间使用另一个值(demo):

HTML(一个单元格)

<th class="gamename">
    <span class="name">Fun Fun</span>
    <span class="perc">96%</span>
</th>

脚本

$(function () {

    $('#games').tablesorter({
        theme: 'blue',
        textExtraction: {
            0: function (node, table, cellIndex) {
                var $n = $(node);
                // add semi-colon between values
                return $n.find('.name').text() + ';' + $n.find('.perc').text();
            }
        },
        textSorter: function (a, b, direction, columnIndex, table) {
            if (columnIndex === 0) {
                var c = table.config,
                    x = a.split(';'),
                    y = b.split(';'),
                    // sort column by percentage when descending sort is active
                    i = c.$headers.eq(0).hasClass('tablesorter-headerDesc') ? 1 : 0;
                return $.tablesorter.sortNatural($.trim(x[i]), $.trim(y[i]));
            } else {
                return $.tablesorter.sortNatural(a,b);
            }
        }
    });

});