有没有更好的方法来跟踪标签的分页?

时间:2011-07-29 18:21:51

标签: php javascript jquery pagination

使用hashchange事件我检测用户何时单击浏览器中的后退按钮并相应地更改URL。是否有更好的方法来进行分页?我正在用户点击我的分页控件之后更改URL,如下所示:

$(".pager").click(function(){

    var start = null;
    if ($.browser.msie) {    
        start = $(this).attr('href').slice($(this).attr('href').indexOf('#')+1);
    } 
    else {    
        start = $(this).attr('href').substr(1);
    }

    $('#start').val(start);

    $.post("visits_results.php", $("#profile_form_id").serialize(),
    function(data) {
        $('#search_results').html(data);
        location.href = "#visits=" + start; 
    }); 

    return false;
});

我检测后退按钮的javascript如下所示:

function myHashChangeCallback(hash) {

    if (hash == "") {
        $("#loadImage").show();

        var no_cache = new Date().getTime();
        $('#main').load("home.php?cache=" + no_cache, function () { 
        $("#loadImage").hide();
    });

    return false;

    }
    else {
    // adding code to parse the hash URL and see what page I'm on...is there a better way?; 
    }
}

function hashCheck() {
    var hash = window.location.hash;
    if (hash != _hash) {
        _hash = hash;
        myHashChangeCallback(hash);
    }
}

我目前计划检查每个#标签和值以查看我应该加载哪个页面,除非有更好的更有效的方法。

有任何想法或建议吗?

1 个答案:

答案 0 :(得分:0)

jQuery Address插件做得非常好。设置完成后,它会提供一系列可以挂钩的逻辑导航事件。它还对history.pushState()提供了非常好的支持,消除了在新浏览器中对主题标签的需求,并且对那些不支持pushState的浏览器也提供了同样好的后备支持。

一个简单的实现看起来像这样:

// Run some code on initial load
$.address.init(function(e) {
    // Address and path details can be found in the event object
    console.log(e);
});

// Handle hashtag/pushState change events
$.address.change(function(e) {
    // Do more fancy stuff. Don't forget about the event object.
    console.log(e);
});

// Setup jQuery address on some elements
$('a').address();

要启用pushState()支持,请将参数传递给脚本,如下所示:

<script type="text/javascript" src="jquery.address-1.3.min.js?state=/absolute/path/to/your/application"></script>