我正在使用jQuery Tablesorter插件,它运行正常。但是有一个问题。想象一下,你有一些排序顺序,但你想要生活页面并很快回来。不幸的是,当你回来时,你会得到最初的排序顺序,这是完全错误的。所以我试图找到一个线索如何在一些变量中保存Tablesorter的状态(记住离开页面时的排序选择)并使用PHP中的_GET通过URL传递它。任何想法和帮助将不胜感激。
我做了一点研究,发现了以下内容:
你可以阅读当前的分类
<script>
$(window).unload( function () {
var sortList;
$(table).tablesorter().bind("sortEnd", function(sorter)
{
sortList = sorter.target.config.sortList;
$_GET['sortList'] = sortList;
});
}
);
</script>
2.我尝试保存上面的排序列表,并在页面加载时读取它:
<script>
$(document).ready(function()
{
sortList=$_GET['sortList'];
$.tablesorter.defaults.widgets = ['zebra'];
$.tablesorter.defaults.sortList = [[1,0]];
$("table").tablesorter();
}
);
</script>
不起作用,我认为这两行是值得怀疑的:
sortlist中= $ _ GET [ 'sortlist中']; ... $ _GET ['sortList'] = sortList;我在这里混合语言JavaScript与PHP和数据类型。但我不是一个专业的程序员,我无法连接点。有什么帮助吗?
Alex
答案 0 :(得分:7)
我在github上有一个tablesorter插件的分支,我编写了一个名为“saveSort”(demo)的小部件,如果浏览器有HTML5,则将最后一种类型存储到localStorage中。后退。
答案 1 :(得分:1)
使用window.location.hash对象尝试使用此库jQuery Address来处理解决方案。我目前正在项目中使用它并且工作正常。
答案 2 :(得分:0)
根据您对页面的编码方式,某些浏览器会自动记住上次状态。但很可能,它不会,特别是在旧浏览器上。
基本的跨浏览器解决方案是将状态信息存储在window.location.hash
对象中。换句话说,对于您想要记住的任何事件或状态,您将哈希值更改为唯一标识符:
window.location.hash = 'column1'
这会将#clicked-button
添加到您的网址末尾。您可能希望在用户对表进行排序时调用此方法。仅此一点不会做任何事情。第二步是监听哈希的更改。 IE有一个onhashchange
事件,但我不认为其他浏览器支持该事件。另一种方法是设置间隔以手动收听。
var last_hash = '';
setInterval(function()
{
if(window.location.hash != last_hash)
{
//a new event happened, change the state of the page
last_hash = window.location.hash;
if(last_hash == 'column1')
{
//sort based on column1
}
else if(last_hash == 'column2')
{
//sort based on column2
}
//etc
}
}, 500);
即使用户离开页面然后返回,这样的脚本也会继续运行。
您还可以阅读这些内容以获取有关其他技术的更多信息。