jQuery Tablesorter插件 - 如何在离开页面时保存状态

时间:2012-02-17 01:34:28

标签: php jquery jquery-plugins tablesorter

我正在使用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>
  1. 不起作用,我认为这两行是值得怀疑的:

                 sortlist中= $ _ GET [ 'sortlist中'];     ...     $ _GET ['sortList'] = sortList;       
  2. 我在这里混合语言JavaScript与PHP和数据类型。但我不是一个专业的程序员,我无法连接点。有什么帮助吗?

    Alex

3 个答案:

答案 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);

即使用户离开页面然后返回,这样的脚本也会继续运行。

您还可以阅读这些内容以获取有关其他技术的更多信息。