我刚开始使用优秀的jQuery tablesorter脚本。这可能是一个愚蠢的问题,但我无法弄清楚如何指定单击后列的排序顺序。我不是指列是按升序还是按降序排序,而是指列对其进行排序的顺序。
例如,如果单击第2列,我可能希望按列2排序,然后按列4排序,然后排列第5列。但是,如果单击第3列,我可能希望按第3列排序,然后是第5栏,然后是第4栏。
提前感谢任何建议!
- MC
答案 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)。