2013-05-07 66 views
1

我目前正在使用jQuery的标签与AJAX加载外部内容。 (http://jqueryui.com/tabs/#ajaxjQuery的标签与AJAX,如何更改网址

我也有下面的代码来显示正在显示的URL的选项卡:

$(window).load(function() { 
    $(function() { 
     $("#tabs").tabs({ 
      show: function (event, ui) { 
       window.location.hash = ui.panel.id; 
      } 
     }); 

    }); 
}); 

我想知道,如果你能够改变的链接是怎么显示?现在默认显示“page.htm l#undefined”,选项卡1显示“page.htm l#ui-tabs-1”,选项卡2显示“page.htm l#ui-tabs-2”等...

有没有一种方法可以自定义名称?并有默认自动显示标签1的URL?

例如“page.html中#账号”

我似乎无法找到或我找错了地方的资源,正确...

回答

0

只要改变你的HTML:

<ul> 
    <li><a href="accounts.html" data-hash="account">Nunc tincidunt</a></li> 
    <li><a href="other.html" data-hash="other">Proin dolor</a></li> 
</ul> 

和你的JavaScript:

activate: function(event,ui){ 
    window.location.hash = $(event.currentTarget).data('hash'); 
} 

出于某种原因,我不知道,数据不被检测ED,尝试:

window.location.hash = $(event.currentTarget).attr('data-hash'); 

你也可以使用load,接收远程标签加载后执行的函数。 activate正在接收标签转换动画结束后执行的功能。

+0

我不能做你的,因为内容将是未来外部页面,有没有办法绕过它? – user1555843 2013-05-08 01:45:52

+0

在浏览器中打印'console.log(ui.panel.id)',如果这是哈希值,你可以执行'location.hash = event.currentTarget.href' – juanpastas 2013-05-08 02:03:08

+0

我其实已经尝试了你的初始建议,尽管# undefined不再出现,但是当我点击其他标签时仍然显示“#ui-tabs-2”,“#ui-tabs-3”。似乎没有阅读数据散列,给出了.. – user1555843 2013-05-08 15:10:24

0

大量挖掘后,原来其已经支持:http://docs.jquery.com/UI/Tabs#Ajax_mode 只需添加标题=“”到“”标签...

+0

该链接不会再转到“Ajax_mode”部分。你知道这是否仍然适用于最新版本的jQuery UI?我无法让它工作。 我正在使用它来添加哈希: beforeActivate:function(event,ui){0} 0 {0} {0} location.hash = ui.newPanel.selector; }, – Billkamm 2013-09-19 19:41:27

+0

找到了方法。我只是使用li元素上的aria-controls属性来自定义通过ajax加载的标签 – Billkamm 2013-09-19 20:58:07