我正在使用jQuery UI:http://jqueryui.com/demos/tabs/的选项卡
当用户单击另一个选项卡时,如何更新浏览器的当前url,方法是向其添加锚链接: ex: url.html# tab -4,并同时推送浏览器的当前历史记录。
谢谢!
发布于 2012-03-19 12:44:21
这将得到您想要的结果(在1.9版中使用jQuery UI 1.8,稍后使用激活事件,有关代码示例,请参阅其他答案)。我在jQuery UI演示中使用了样例HTML;
$( "#tabs" ).tabs({
select: function(event, ui) {
window.location.hash = ui.tab.hash;
}
});
发布于 2012-03-19 12:43:53
对于、jQuery、UI 1.10、和更高版本,show
已被弃用于activate
。而且,id
不再是有效的jQuery。使用.attr('id')
代替。最后,使用on('tabsactivate')
而不是bind()
。
$(function() {
$("#tabs").tabs({
activate: function(event, ui) {
window.location.hash = ui.newPanel.attr('id');
}
});
});
创建后方法:
$("#myTabs").on( "tabsactivate", function(event, ui) {
window.location.hash = ui.panel.id;
});
可观测结果:http://jsfiddle.net/RVHzV/show/light/
早期版本的JQuery
向选项卡调用中添加一个处理程序,以使用选项卡id更新位置哈希:
$("#myTabs").tabs({
// options ...
show: function(event, ui) {
window.location.hash = ui.panel.id;
}
});
还可以在创建UI Tabs之后添加此内容:
$("#myTabs").bind( "tabsshow", function(event, ui) {
window.location.hash = ui.panel.id;
});
发布于 2015-04-02 02:17:51
首先,我们需要更新选项卡更改上的散列(这是最新的jQueryUI):
$('#tabs').tabs({
beforeActivate: function (event, ui) {
window.location.hash = ui.newPanel.selector;
}
});
然后,我们需要更新散列更改的活动选项卡(即启用浏览器历史记录、后退/向前按钮和用户手动键入哈希):
$(window).on('hashchange', function () {
if (!location.hash) {
$('#tabs').tabs('option', 'active', 0);
return;
}
$('#tabs > ul > li > a').each(function (index, a) {
if ($(a).attr('href') == location.hash) {
$('#tabs').tabs('option', 'active', index);
}
});
});
https://stackoverflow.com/questions/9777518
复制相似问题