Javascript jquery bbq从url中删除哈希b

Javascript jquery bbq从url中删除哈希b,javascript,jquery,jquery-ui,jquery-bbq,Javascript,Jquery,Jquery Ui,Jquery Bbq,我是jQueryBBQ的新手,到目前为止我已经了解了大部分设置,但是我有一个小问题。这是设置 一页,右侧有主导航链接 每次点击导航链接都会将页面的正文内容更改为相应的数据,显示和隐藏带有bbq的div 其中一个链接显示一个div和另一组链接,单击这些链接将在url中设置哈希B 所以点击第一个链接 domain.com/dir/A=page1 第二个链接点击 domain.com/dir/A=page1&B=set1 如果我按下后退按钮,它会返回到上一个A散列,但B散列仍保留在url中 当不在特定

我是jQueryBBQ的新手,到目前为止我已经了解了大部分设置,但是我有一个小问题。这是设置

一页,右侧有主导航链接 每次点击导航链接都会将页面的正文内容更改为相应的数据,显示和隐藏带有bbq的div 其中一个链接显示一个div和另一组链接,单击这些链接将在url中设置哈希B

所以点击第一个链接 domain.com/dir/A=page1

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

如果我按下后退按钮,它会返回到上一个A散列,但B散列仍保留在url中

当不在特定页面上时,是否有方法移除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';
        }
    }
});​

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

请在此处查看文档:

合并模式编号:如果未启用合并模式,则合并行为默认为0 除非在中指定了以开头的哈希字符串,否则指定 哪种情况下的合并行为默认为2,如下所示:

0:params参数中的params将覆盖当前状态中的任何params。 1:当前状态下的任何参数都将覆盖params参数中的params。 2:params参数将完全替换当前状态。 因此,如果您的链接看起来像:

mysite.comA=page1&B=page2您可以拨打

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

然后,您的文档位置将是:


mysite.comA=pageXYZ

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

请在此处查看文档:

合并模式编号:如果未启用合并模式,则合并行为默认为0 除非在中指定了以开头的哈希字符串,否则指定 哪种情况下的合并行为默认为2,如下所示:

0:params参数中的params将覆盖当前状态中的任何params。 1:当前状态下的任何参数都将覆盖params参数中的params。 2:params参数将完全替换当前状态。 因此,如果您的链接看起来像:

mysite.comA=page1&B=page2您可以拨打

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

然后,您的文档位置将是:

mysite.comA=pageXYZ

我找到了一种更简单的方法,不需要插件:

将当前hashparameters作为searchParameters复制到虚拟URL。现在,您可以像对待搜索参数一样对待散列参数,使用searchparameters developer.mozilla.org/en-US/docs/Web/API/URLSearchParams的所有功能编辑它们,然后将它们作为hasparameters复制回来

例如,设置和更新参数的简单函数,也可以使用“.delete”而不是“.set”来删除参数:

函数setorUpdateHashParameterHashParameterName,hashParameterValue{ 让URL=新URL'https://dummy.com“;//创建虚拟url theURL.search=window.location.hash.substring1;//复制当前哈希参数而不使用AS搜索参数 URL.searchParams.set hashParameterName,hashParameterValue;//使用searchParams API设置或更新值 window.location.hash=theURL.searchParams;//作为hashparameters写回 } 我找到了一种更简单的方法,不需要插件:

将当前hashparameters作为searchParameters复制到虚拟URL。现在,您可以像对待搜索参数一样对待散列参数,使用searchparameters developer.mozilla.org/en-US/docs/Web/API/URLSearchParams的所有功能编辑它们,然后将它们作为hasparameters复制回来

例如,设置和更新参数的简单函数,也可以使用“.delete”而不是“.set”来删除参数:

函数setorUpdateHashParameterHashParameterName,hashParameterValue{ 让URL=新URL'https://dummy.com“;//创建虚拟url theURL.search=window.location.hash.substring1;//复制当前哈希参数而不使用AS搜索参数 URL.searchParams.set hashParameterName,hashParameterValue;//使用searchParams API设置或更新值 window.location.hash=theURL.searchParams;//作为hashparameters写回
}工作非常完美,由于某种原因很难理解文档,但现在有了意义。谢谢工作非常完美,由于某种原因很难理解文档,但现在有了意义。谢谢