jQueryTableSorter:如何在不同html页面上的两个表上保持排序顺序,这些表具有相同的标题,但顺序不同,并且有些是隐藏的
因此,我有两个html页面,其中的表具有相同的数据,尽管列的顺序可能不同,有些列将隐藏在一个表中,而不是隐藏在另一个表中。我希望这两个表的初始排序基于其他表的排序。目前我有一个脚本,它在sortEnd上创建了一个类似于sortList的2d数组,除了替换第一个数组中的索引之外,列的名称被替换。然后我将此数组存储在sessionStoreage中,以便在第二个html页面中访问它。但是,我不确定如何转换回这个数组,以便将列名更改回第二个表的适当索引。我正在使用tablesorter的莫蒂叉。下面是我创建2d数组并发送到另一个html页面的第一个脚本jQueryTableSorter:如何在不同html页面上的两个表上保持排序顺序,这些表具有相同的标题,但顺序不同,并且有些是隐藏的,jquery,tablesorter,Jquery,Tablesorter,因此,我有两个html页面,其中的表具有相同的数据,尽管列的顺序可能不同,有些列将隐藏在一个表中,而不是隐藏在另一个表中。我希望这两个表的初始排序基于其他表的排序。目前我有一个脚本,它在sortEnd上创建了一个类似于sortList的2d数组,除了替换第一个数组中的索引之外,列的名称被替换。然后我将此数组存储在sessionStoreage中,以便在第二个html页面中访问它。但是,我不确定如何转换回这个数组,以便将列名更改回第二个表的适当索引。我正在使用tablesorter的莫蒂叉。下面是
<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>
$(文档).ready(函数()
{
var-currentSort;
$(“#myTable”).tablesorter({
修正:错,
主题:“蓝色”,
真的,
小部件:['stickyHeaders'],
widgetOptions:{
stickyHeaders\u addResizeEvent:true
}
}).bind(“分拣机”,功能(事件){
var table=event.target,
currentSort=table.config.sortList;
//以第一个排序列为目标
柱状变种;
var列名;
var currentSortwColumnNames=[[],[];
对于(var x=0;x
我不会创建数组,而是将设置作为JSON字符串保存:
var jsonSettings = JSON.stringify(table.config.sortList);
并将该值存储在cookie中。需要时,只需将其解析回对象:
var obj = JSON.parse(jsonSettings);
我不会创建数组,但会将设置作为JSON字符串保存:
var jsonSettings = JSON.stringify(table.config.sortList);
并将该值存储在cookie中。需要时,只需将其解析回对象:
var obj = JSON.parse(jsonSettings);
可以使用保存和还原这些表上的排序。默认情况下,它会为每页上的每个表分别保存排序。让它在不同页面上的两个表上工作的诀窍是设置存储选项:
- 要设置会话存储,请将小部件选项设置为
true
现在不需要“分拣机”代码$(function() { $("#myTable").tablesorter({ widthFixed: false, theme: "blue", sortReset: true, widgets: ['stickyHeaders', 'saveSort'], widgetOptions: { stickyHeaders_addResizeEvent: true, storage_useSessionStorage: true } }); });
- 然后在两个表上设置一个匹配的
属性(任意字符串)-由小部件选项设置数据表页面
<table data-table-page="mytable">...</table>
。。。
- 要设置会话存储,请将小部件选项设置为
true
现在不需要“分拣机”代码$(function() { $("#myTable").tablesorter({ widthFixed: false, theme: "blue", sortReset: true, widgets: ['stickyHeaders', 'saveSort'], widgetOptions: { stickyHeaders_addResizeEvent: true, storage_useSessionStorage: true } }); });
- 然后在两个表上设置一个匹配的
属性(任意字符串)-由小部件选项设置数据表页面
<table data-table-page="mytable">...</table>
。。。
有关更多详细信息,请参阅文档。问题在于,sortList是一个二维数组,它包含列索引,如果是升序或降序排序,那么它就是一个二维数组。这就是为什么我创建了另一个数组,但将列索引替换为列名而不是索引。我需要在第二个html页面上做相反的操作,但我不确定如何进行。我想我需要使用jquery来获取标题的列名数组,并将其与我存储在sessionStorage.so JSON.stringify数组中的currentSortwColumnNames数组进行比较。将数组字符串化,保存到session,并在需要时将其解析回来。它将处理从字符串到数组的转换。不过,问题是sortList是一个二维数组,它保存列索引,如果是升序或降序排序。这就是为什么我创建了另一个数组,但将列索引替换为列名而不是索引。我需要在第二个html页面上做相反的操作,但我不确定如何进行。我想我需要使用jquery来获取标题的列名数组,并将其与我存储在sessionStorage.so JSON.stringify数组中的currentSortwColumnNames数组进行比较。将数组字符串化,保存到session,并在需要时将其解析回来。它将处理从string到array.Mottie的转换,这将起作用,但两个表中的列顺序不同(即相同的列名,但在表中的顺序不同)。因此,当我使用该代码时,排序顺序不正确。这就是为什么在我的原始代码中,我创建了一个类似于sortList的数组,只是我用列名(currentSortwColumnNames)替换了列索引。我不确定的是,如何在第二个html页面的第二个表上执行相反的操作。Mottie,除了两个表上的列顺序不同(即,相同的列名,但在表上的顺序不同)。因此,当我使用该代码时,排序顺序不正确。这就是为什么在我的原始代码中,我创建了一个类似于sortList的数组,只是我用列名(currentSortwColumnNames)替换了列索引。我不确定的是,如何在第二个html页面的第二个表上执行相反的操作。