Javascript jquery bbq从url中删除哈希b
我是jQueryBBQ的新手,到目前为止我已经了解了大部分设置,但是我有一个小问题。这是设置 一页,右侧有主导航链接 每次点击导航链接都会将页面的正文内容更改为相应的数据,显示和隐藏带有bbq的div 其中一个链接显示一个div和另一组链接,单击这些链接将在url中设置哈希B 所以点击第一个链接 domain.com/dir/A=page1 第二个链接点击 domain.com/dir/A=page1&B=set1 如果我按下后退按钮,它会返回到上一个A散列,但B散列仍保留在url中 当不在特定页面上时,是否有方法移除B peramJavascript 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中 当不在特定
$(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写回
}工作非常完美,由于某种原因很难理解文档,但现在有了意义。谢谢工作非常完美,由于某种原因很难理解文档,但现在有了意义。谢谢