如何让jQuery Tablesorter默认降序排序?

18

我无法弄清楚这个问题。这个问题在这里也被提出过http://www.nabble.com/TableSorter-plugin---default-column-sort-DESC-instead--How--to25180761s27240.html#a25180761,但没有得到回复。

我已经尝试过:

    $.tablesorter.defaults.sortInitialOrder = 'desc';

我尝试修改jquery.tablesorter.js文件,让默认排序方式变为“降序”,但这并没有生效。当我点击列标题时,第一次排序仍然是升序,所以用户必须点击两次才能按降序排列数值。

我该如何让Tablesorter默认按降序排序?

3个回答

24

请尝试从tablesorter网站下载最新版本 - 这个问题似乎已经在2.0.3至2.0.5之间的某个版本中得到了修复。

<script type="text/javascript">
$(document).ready(function() 
    { 
        $("#theTable").tablesorter({ 
            sortInitialOrder: 'desc',
            sortList: [[3,1]] // etc.

    }); 
    } 
); 
</script>

这个方法适用于我使用的最新版本的tablesorter,而之前的版本则不适用。希望它能有所帮助!


15

看起来是tablesorter代码中的一个bug,或者我没有理解sortInitialOrder参数应该做什么。在第536行,它通过查看列被排序的次数并取值模2来设置排序器顺序。它还应该考虑sortInitialOrder的值。

将第536行更改为

this.order = this.count++ % 2;

this.order = this.count++ == 0 ? this.order : (1 - this.order);

在这一行后添加(这样第一次点击其他列时会给您默认值)

$headers.not($cell).each( function() {
    this.count = 0;
});

并将第421行更改为

o.count = s[1];
to
o.order = o.count = s[1];

如果应用了sortList,则初始顺序将被覆盖。

然后,您可以使用sortInitialOrder参数来设置列的默认排序顺序。sortList中提供的任何排序都将覆盖为整个表格提供的sortInitialOrder。

请注意,此适用于Tablesorter 2.0。


1
非常好 - 在这个网站上需要在一些管理工具上完成这个任务 :) - Jarrod Dixon

10

简单地使用这个方法,数组的第二项为排序顺序(0表示升序,1表示降序):

.tablesorter({ sortList: [[0, 1]] });

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接