1

I just started using the excellent jQuery tablesorter script. This might be a dumb question, however I cannot figure out how to specify the order in which the columns are sorted after clicking. I am not referring to whether columns are sorted in ascending or descending order, but rather the sequence in which the columns are sorted.

For example, if a one clicks on column 2, I might want to sort by column 2, then column 4, then column 5. However, if a one clicks on column 3, I might want to sort by column 3, then column 5, then column 4.

Thanks in advance for any advice!

--MC

4

1 回答 1

0

我只能猜测您是在问如何对多列进行排序?还是您的意思是您希望其他列根据单击的第一列自动排序?

如果想知道如何对多列进行排序,则默认情况下,按住shift键然后单击列以按顺序排序。您可以通过更改sortMultiSortKey选项 ( 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基本上将列的排序添加到每个排序末尾的选项。因此,如果您总是希望在用户对另一列进行排序之后按字母顺序对特定列进行排序(例如生产者),只需使用此选项初始化表排序器:

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

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

遗憾的是,该sortAppend选项存在于原始表格排序器中,但缺少它的代码ref)。我已经在我的 tablesorter 分支中解决了这个问题- 请参阅这个演示

或者,如果您希望排序是动态的,即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]);

});

当我有时间时,我计划在将来更容易地做到这一点(参见这个问题)。

于 2013-08-31T14:54:18.067 回答