更新后,Jquery Tablesorter对相同的列进行排序

时间:2010-02-18 12:47:43

标签: javascript jquery tablesorter

我有一个用ajax更新的表,并且在更新之后它如果已排序但我需要排序不是固定列,而是在更新之前最后点击的同一列。

function tableUpdated() {
$(".tablesorter").trigger("update");
//alert($(".tablesorter").sorting);
var sorting = [[7, 0]];
$("table").trigger("sorton", [sorting]);
}

在上面的代码中,我需要将我选择的列索引而不是7

6 个答案:

答案 0 :(得分:5)

jQuery的.data()将在这里为您提供帮助。每当用户单击以对表进行排序时,将列存储在表本身上。在sort函数中,添加:

$("#table").data('sorting', selectedColumn);

现在,id="table"元素的属性sorting的值为selectedColumn。在tableUpdated中,您可以使用以下数据:

function tableUpdated() {
    $(".tablesorter").trigger("update");
    var sorting = [[$("#table").data('sorting'), 0]];
    $("#table").trigger("sorton", [sorting]);
}

使用.data()添加的数据可能更复杂,允许您添加数据对象。有关详细信息,请参阅this page

答案 1 :(得分:3)

使用您的代码,您可以执行以下操作(假设您的表ID为#list-table )以维护当前的表排序:

function tableUpdated() {
    $("#list-table").trigger("update");
    var sorting = $("#list-table").get(0).config.sortList;
    $("#list-table").trigger("sorton", [sorting]);
}

答案 2 :(得分:2)

你可以在桌子上的'sortEnd'事件中选择它:

var lastSortList;

$table.on('sortEnd', function(e) {
    lastSortList = e.target.config.sortList;
});

答案 3 :(得分:0)

在与此争斗一天左右之后,我发现datatables plugin开箱即可保存状态。我希望这有助于其他人。

答案 4 :(得分:0)

在这里,您可以使用相同的列进行订购,并为分拣机添加新的

var sorting = $("table").get(0).config.sortList;
sorting.push([2,0]); // add an element to the array
$("table").trigger("sorton", [sorting]);

答案 5 :(得分:0)

仅在启动这样的ajax时保存最后一个排序可能会少一些开销:

lastSortList=$("table")[0].config.sortList;

然后在更新之后将其恢复原状:

$("table").trigger("sorton", [lastSortList]);

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