如何在此应用程序中正确实现History.js或任何其他替代方法(jquery bbq,pjax,jquery地址)?

时间:2012-07-27 01:22:28

标签: jquery ajax history.js pjax jquery-bbq

正在处理的页面的核心看起来像http://jsfiddle.net/AUCYf/1/,当用户从搜索引擎登陆时,“切换框”中的内容为“{3}}。已被搜查的内容将被打开。我找到了很多关于使AJAX可抓取的教程,但我坚持实现我在标题中提到的脚本。

现在发生的是当我点击按钮' LINK1' div1打开,网址为:mypage.com/#link1
我需要直接访问mypage.com/#link1时打开div1。 另外,因为可以同时打开更多的div,有没有办法做这样的事情mypage.com/#link1&link3

1 个答案:

答案 0 :(得分:0)

使用jQuery BBQ实现此目的的一种常见方法是绑定到窗口hashchange事件以处理基于哈希历史记录的导航,然后在首次加载应用程序时手动触发hashchange事件。

jQuery BBQ使用参数化哈希状态,可以独立管理多个参数。例如,您的网址可能看起来像

mypage.com/#a=link1&b=link3

为了完成这项工作,您需要更改onclick事件以使用BBQ pushState而不仅仅是你的锚点上的href =“#link1”。

把它们放在一起我们可以有类似的东西:

$('.show_hide1').click(function(){
    $.bbq.pushState({'a':'link1'});
});

...

$(window).bind( 'hashchange', function(e) {
    var state = $.bbq.getState();
    //do something with the state
    if(state['a'] === 'link1') {
        $(".slidingDiv1").fadeToggle();
    }
    ...
}

$(window).trigger('hashchange');

$(窗口).trigger('hashchange'); 将在加载脚本时触发,并自动从URL加载适当的内容。

查看jQuery BBQ文档here,您可能需要查看他的示例,以便独立管理多个哈希状态。