【问题标题】:jquery tablesorter : determining sort order for columnjquery tablesorter:确定列的排序顺序
【发布时间】:2015-01-08 22:22:46
【问题描述】:

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

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

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

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

...但是它看起来在“sortStart”点上排序顺序是未知的,因此解析器无法根据该列的排序顺序提供不同的值。

这可能吗?谢谢:-)

【问题讨论】:

  • 可以尝试浏览存储在主表元素上的数据,看看那里是否有任何当前的排序设置

标签: jquery tablesorter


【解决方案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);
            }
        }
    });

});

【讨论】:

  • 这真的很棒 - 感谢您花时间为我指明正确的方向(也感谢演示 - 真的很棒:-))。
  • 干得好@mottie 谢谢!我用它来了解一般的 textSorter,但随后总是先添加另一个排序列,无论何时运行排序......
猜你喜欢
  • 1970-01-01
  • 2023-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-23
相关资源
最近更新 更多