jquery tablesorter:确定列的排序顺序

jquery tablesorter : determining sort order for column

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

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

让我头疼的一点是,我似乎无法在解析时确定排序顺序。看起来我可以在通过以下请求排序时重新解析单元格:

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

...但是它 看起来 就像在 "sortStart" 点排序的顺序是未知的,所以解析器不能基于那个提供不同的值列的排序顺序。

这可能吗?谢谢:-)

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


这与 this Whosebug 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);
            }
        }
    });

});