单击jQuery tablesorter后指定不同的排序顺序

时间:2013-08-23 21:12:13

标签: jquery tablesorter

我刚开始使用优秀的jQuery tablesorter脚本。这可能是一个愚蠢的问题,但我无法弄清楚如何指定单击后列的排序顺序。我不是指列是按升序还是按降序排序,而是指列对其进行排序的顺序。

例如,如果单击第2列,我可能希望按列2排序,然后按列4排序,然后排列第5列。但是,如果单击第3列,我可能希望按第3列排序,然后是第5栏,然后是第4栏。

提前感谢任何建议!

- MC

1 个答案:

答案 0 :(得分:0)

我只能猜到你在问如何对多列进行排序?或者您是否希望其他列根据单击的第一列自动排序?

如果想知道如何对多列进行排序,则默认情况下,按住 shift 键,然后单击列以按顺序排序。您可以通过更改sortMultiSortKey选项(demo)来更改此密钥。

如果您想根据所选列自动对多个列进行排序,我建议您添加排序链接/按钮来为您执行此操作,否则您将从用户那里获取这些选择。尝试这样的事情(demo):

HTML

<button class="sort1">Sort 1-3</button>
<button class="sort2">Sort 4-6</button>

脚本

$('table').tablesorter();

$('.sort1').click(function(){
    $('table').trigger('sorton', [[ [1,0],[0,0],[2,0] ]]);
});

$('.sort2').click(function(){
    $('table').trigger('sorton', [[ [3,1],[4,0],[5,0] ]]);
});

或者,您可以使用sortAppend选项,它基本上将列的排序添加到每个排序的末尾。因此,如果您始终希望按字母顺序对特定列进行排序(例如,生产者),则在用户对另一列进行排序后,只需使用此选项初始化tablesorter:

$('table').tablesorter({
    sortAppend: [ [3,0] ] // 4th column (zero-based index) sort appended
});

因此,如果用户对第二列进行排序,则会在之后添加第四列排序。基本上就像触发这样的那样:[[ [1,0],[3,0] ]]

可悲的是,sortAppend选项存在于原始tablesorter中,但缺少的代码ref)。我已在fork of tablesorter修正了此问题 - 请参阅this demo

或者,如果您希望排序是动态的,即sortAppend会根据所选列而发生变化,那么现在您需要绑定到sortBegin事件以添加排序( demo; ref):

$('table').bind('sortBegin', function(e, tbl) {

    var c = tbl.config,
        list = c.sortList;

    // add third column sort if not the initial sort, otherwise sort second column
    // (zero based index)
    list.push((list[0] && list[0][0] !== 2) ? [2, 0] : [1, 0]);

});

我计划在将来更容易做到这一点(see this issue)。