jQuery UI选项卡,单击其他选项卡时更新URL

Jer*_*sia 12 jquery tabs jquery-ui

我正在使用jQuery UI的选项卡:http://jqueryui.com/demos/tabs/

当用户通过添加锚链接点击其他选项卡时,如何更新浏览器的当前URL : ex:url.html#tab-4并同时推送浏览器的当前历史记录.

谢谢!

Jef*_*f B 35

对于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');
        }
    });
});
Run Code Online (Sandbox Code Playgroud)

创作后方法:

$("#myTabs").on( "tabsactivate", function(event, ui) {
    window.location.hash = ui.panel.id;
});
Run Code Online (Sandbox Code Playgroud)

演示:http://jsfiddle.net/RVHzV/

可观察到的结果:http://jsfiddle.net/RVHzV/show/light/

早期版本的JQuery

在Tab键调用中添加处理程序以使用选项卡ID更新位置哈希值:

$("#myTabs").tabs({
   // options ...
   show: function(event, ui) {
        window.location.hash = ui.panel.id;
   }
});
Run Code Online (Sandbox Code Playgroud)

您还可以在创建UI标签后添加此项:

$("#myTabs").bind( "tabsshow", function(event, ui) {
        window.location.hash = ui.panel.id;
});
Run Code Online (Sandbox Code Playgroud)

代码演示:http://jsfiddle.net/jtbowden/ZsUBz/1/

可观察到的结果:http://fiddle.jshell.net/jtbowden/ZsUBz/1/show/light/


DG3*_*DG3 11

这应该得到你想要的(使用jQuery UI 1.8,在1.9及更高版本中使用activate事件,请参阅代码示例的其他答案).我在jQuery UI演示中使用了示例HTML;

        $( "#tabs" ).tabs({
            select: function(event, ui) {                   
                window.location.hash = ui.tab.hash;
            }
        });
Run Code Online (Sandbox Code Playgroud)

  • @ KeyCrumbs.Looks就像你正在查看不再支持select事件的最新版本的文档.答案已有一年多了.请查看支持该事件的1.8.10版文档.请通过发布您的代码来支持您的评论,为什么它不起作用... OP已经通过说它对他有效来标记答案正确...在投票一年前回答之前调查更多.这是我掀起的一个样本你受益http://experiementswithweb.com/testjs/jq.html (2认同)
  • @ DG3不再有效的旧答案应该被否决,这是使站点保持最新状态的一种方式。 (2认同)