我有一个用ajax更新的表,并且在更新之后它如果已排序但我需要排序不是固定列,而是在更新之前最后点击的同一列。
function tableUpdated() {
$(".tablesorter").trigger("update");
//alert($(".tablesorter").sorting);
var sorting = [[7, 0]];
$("table").trigger("sorton", [sorting]);
}
在上面的代码中,我需要将我选择的列索引而不是7
答案 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]);
请记住在正确的范围内声明第一行。