如何从tablesorter插件获取当前排序顺序?

Val*_*Val 10 jquery tablesorter jquery-plugins

我刚开始使用Christian Bach优秀的TableSorter插件,我需要获得列的当前排序方向.我有几个专栏:

  • ID
  • 名称
  • 类别

ID和名称设置为不可排序使用

headers:    { 0: {sorter: false}, 1: {sorter: false} }
Run Code Online (Sandbox Code Playgroud)

我在Name上添加了一个click处理程序,以便它在Category列上触发sort事件.使用示例" 使用表外链接对表进行排序 ",我可以获取Name标题来触发Category排序 - 但它是硬编码的,可以在一个方向排序.

如何让它查看"类别"列当前排序的当前方向,并按相反的方向排序?(我可以处理翻转值;因为排序顺序为0或1,我可以对该值进行异或,以获得相反的结果,比如var sort; sort ^= sort;- 我的问题是如何获取当前值.

这是当前在Name列上设置click处理程序的代码:

$("#nameCol").click(function() {
    var sorting = [[2, 0]];     /* sort 3rd col (Category) descending */
    $("#SearchResults").trigger("sorton", [sorting] );  /* SearchResults is the ID of the sortable table */
    return false;               /* cancel default link action on a#nameCol */
});
Run Code Online (Sandbox Code Playgroud)

谢谢!

Bre*_*Nee 22

您可以使用内置sortEnd事件来获取sortOrder,如下所述:https://stackoverflow.com/a/4150187/363155

$('#yourtableId').on('sortEnd', function(event) {
    // Prints the current sort order to the console
    console.log(event.target.config.sortList);
});
Run Code Online (Sandbox Code Playgroud)


e-m*_*tiv 9

你也可以在外面,其他任何地方捕获它(例如在你的函数中,启动ajax,...),并且只在需要时而不是每次点击时,这样的开销会少一点:

lastSortList=$("#mytable")[0].config.sortList;
Run Code Online (Sandbox Code Playgroud)

以及在ajax更新后对其进行排序的示例:

$("#mytable").trigger("sorton", [lastSortList]);
Run Code Online (Sandbox Code Playgroud)

请记住在正确的范围内声明第一行.

  • 这个解决方案比公认的答案要好得多。 (2认同)

小智 1

表头应该全部调用相同的点击事件:

$('th').click(function() {
     handleHeaderClick(this);
});  
Run Code Online (Sandbox Code Playgroud)

然后单击处理程序应添加/删除适用的类。

function handleHeaderClick(hdr) {
    if ($(hdr).hasClass('headerSortDown') == true) {
        $(hdr).removeClass('headerSortDown');
        $(hdr).addClass('headerSortUp');
    } else if ($(hdr).hasClass('headerSortUp') == true) {
        $(hdr).removeClass('headerSortUp');
        $(hdr).addClass('headerSortDown');
    } else {
        $('th', myTable).removeClass('headerSortUp headerSortDown');
        $(hdr).addClass('headerSortDown');
    }
    doSomething();
};
Run Code Online (Sandbox Code Playgroud)

我希望这有帮助。