jquery bbq从url中删除哈希b

see*_*soe 1 javascript jquery jquery-ui jquery-bbq

我是jquery bbq的新手,到目前为止我已经找到了大部分设置,但我有一点问题.继承人的设置.

一个页面,主导航链接右边的每个导航链接点击将在页面的主体内容更改为相应的数据(显示和隐藏的div)(烧烤)的链接之一显示了另一组的链接,一个div单击时将在URL中设置哈希值B.

所以首先链接点击domain.com/dir/#A=page1

第二个链接单击domain.com/dir/#A=page1&B=set1

如果我按下后退按钮它会回到之前的A哈希,但是B哈希仍然在网址中.

有没有办法在不在特定页面上时删除B peram?

$(window).bind('hashchange', function(e) {
    var state = $.bbq.getState('p');
    var graphState = $.bbq.getState('n');

    var base_title = '{/literal}{$smarty.const.SITE_TITLE}{literal} | Dashboard | ';
    $('.profile-nav a').each(function() {
        if (!state) {
            $('.profile-nav a').each(function() {
                $('#' + this.id).removeClass('live active');
                document.title = base_title + 'Message Center';
            });
            $('#m').addClass('live active');
        } else if (state == this.id) {
            $('#' + this.id).addClass('live active');
            document.title = base_title + $(this).text();
        } else {
            $('#' + this.id).removeClass('live active');
        }
    });

    if (!state) {
        $('.tab-content').fadeOut('fast');
        $('.message-content').fadeIn('slow');
    } else {
        $('.tab-content').fadeOut('fast');
        clicked = $('#' + state).attr('rel').split(' ')[0];
        $('.' + clicked).fadeIn('slow');
    }

    if (state == 'r') {
        if (graphState) {
            $('.nick-breakdown').fadeOut('fast');
            $('#' + graphState).fadeIn('slow');
            document.title = base_title + 'Reports | ' + $('#' + graphState).attr('rel');
        } else {
            $('.item-breakdown').fadeOut('fast');
            $('.nick-breakdown').fadeIn('slow');
            document.title = base_title + 'Reports';
        }
    }
});?
Run Code Online (Sandbox Code Playgroud)

小智 5

我使用jsbbq.pushState和merge_mode = 2完成了同样的事情,而不是仅仅在锚点上设置#.

查看这里的文档:http://benalman.com/code/projects/jquery-bbq/docs/files/jquery-ba-bbq-js.html#jQuery.bbq.pushState

merge_mode(Number):如果未指定merge_mode,则合并行为默认为0(除非指定以#开头的散列字符串,在这种情况下合并行为默认为2),并且如下所示:

  • 0:params参数中的参数将覆盖当前状态中的任何参数.
  • 1:当前状态下的任何参数都将覆盖参数参数中的参数.
  • 2:params参数将完全取代当前状态.

因此,如果您的链接如下:

mysite.com#A = page1&B = page2你可以打电话

$ .bbq.pushState({'A':'pageXYZ'},2);

然后您的文档位置将是:

mysite.com#A = pageXYZ