2013-05-07 62 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