所以我有两个html页面,其中包含相同数据的表,尽管列可能的顺序不同,有些列将隐藏在一个表中而不会隐藏在另一个表中。我希望这两个表的初始排序基于其他表排序。目前我有一个脚本,在sortEnd上创建一个类似于sortList的二维数组,除了第一个数组中的索引而不是列的名称被替换。然后我将此数组存储在sessionStoreage中,以便我可以在第二个html页面中访问它。但是,我不确定如何转换回这个数组,以便将列名更改回第二个表的适当索引。我正在使用Mottie forkorter。下面是我创建第二个数组以发送到另一个html页面的第一个脚本。
<script>
$(document).ready(function()
{
var currentSort;
$("#myTable").tablesorter({
widthFixed: false,
theme: "blue",
sortReset : true,
widgets: ['stickyHeaders'],
widgetOptions: {
stickyHeaders_addResizeEvent: true
}
}).bind("sortEnd", function(event) {
var table = event.target,
currentSort = table.config.sortList;
// target the first sorted column
var columnNum;
var columnName;
var currentSortwColumnNames = [[],[]];
for(var x = 0; x < currentSort.length; x ++)
{
if (!currentSort[x])
{
currentSort[x] = [];
}
if (!currentSortwColumnNames[x])
{
currentSortwColumnNames[x] = [];
}
columnNum = currentSort[x][0];
columnName = $(table.config.headerList[columnNum]).text();
currentSortwColumnNames[x][0] = columnName;
currentSortwColumnNames[x][1] = currentSort[x][1];
}
console.log(currentSortwColumnNames.toString());
sessionStorage.setItem("currentSortwColumnNames", currentSortwColumnNames);
})
}
);
</script>
答案 0 :(得分:0)
我不会创建数组,但会将设置保留为JSON字符串:
var jsonSettings = JSON.stringify(table.config.sortList);
并将此值存储在cookie中。需要时,只需将其解析回对象:
var obj = JSON.parse(jsonSettings);
答案 1 :(得分:0)
您可以使用saveSort
widget保存并恢复这些表的排序。默认情况下,它会为每个页面上的每个表单独保存排序。让它在不同页面上的两个表上工作的技巧是设置存储选项:
要设置会话存储空间,请将storage_useSessionStorage
窗口小部件选项设置为true
。
$(function() {
$("#myTable").tablesorter({
widthFixed: false,
theme: "blue",
sortReset: true,
widgets: ['stickyHeaders', 'saveSort'],
widgetOptions: {
stickyHeaders_addResizeEvent: true,
storage_useSessionStorage: true
}
});
});
不需要&#34; sortEnd&#34;现在代码。
然后在两个表上设置匹配的data-table-page
属性(任何字符串) - 由storage_page
小部件选项设置。
<table data-table-page="mytable">...</table>
有关详细信息,请参阅storage
function文档。