2009-05-01 146 views
33

有沒有人能夠獲得jQuery UI Tabs 3(最新版本)與後退按鈕一起工作?jQuery UI Tabs後退按鈕歷史

我的意思是如果用戶點擊後退按鈕,他們應該去頁面上以前訪問過的標籤,而不是一個不同的頁面。

歷史插件聽起來像它可以工作,但我似乎無法使它與 ajax加載標籤。

如果有人設法使這項工作,它將深表感謝,謝謝!

回答

1

jQuery的History/Remote插件做到這一點。 Tabs和History/Remote插件的創建者是同一個人,並且他們一起工作here

+0

他在這裏使用的版本是舊版本,其版本3是一個即時通訊使用,道歉,應該寫了in。 – CesarHerrera 2009-05-18 20:49:59

38

我剛剛遇到了這個問題。它真的很容易與這裏的jQuery地址插件http://www.asual.com/jquery/address/

標籤的演示似乎有點過於複雜。我只是做了這一點:

$('document').ready(function() { 
    // For forward and back 
    $.address.change(function(event){ 
     $("#tabs").tabs("select" , window.location.hash) 
    }) 

    // when the tab is selected update the url with the hash 
    $("#tabs").bind("tabsselect", function(event, ui) { 
     window.location.hash = ui.tab.hash; 
    }) 
}); 
3

更新:我張貼不解決我描述的,如果我還記得,當我解決吧^^將再次發佈該問題的解決方案。 Update2:我現在已經「解決」了這個問題(見下文)。

問題有點老,但如果有人像我一樣在這個問題上磕磕絆絆,Justin Hamade對上述解決方案的快速改變可能會幫助一些人。

如果你使用jQuery地址externalChange事件,而不是僅僅是‘改變’它可以防止發送一個多餘的請求(在我的情況導致的JavaScript控制檯中的錯誤)。這是因爲,如果有人點擊選項卡上自己的(感謝jQuery用戶界面)的地址發生變化,thsi變化觸發$ .address.change一次,它選擇即使jQuery的UI已經做了選項卡,以便......至少我想想那是怎麼回事。

此外,我不喜歡創建像「#ui-tab-2」,「#ui-tab-3」等哈希標籤,所以我使用了下面的代碼,這使得urls使用錨元素的名稱作爲哈希值(即 「www.example.com#cool_stuff」,而不是 「www.example.com#UI標籤-2」):

$(function() { 
    $("#tabs").tabs({ 
    cache: false, 
    }); 

    // For forward and back 
    $.address.externalChange(function(event){ 
    var name = window.location.hash != "" ? window.location.hash.split("#")[2] : "" 
    $("#tabs").tabs("select" , $("#tabs a[name="+ name + "]").attr('href')) 
    }); 
    // when the tab is selected update the url with the hash 
    $("#tabs").bind("tabsselect", function(event, ui) { 
    $.address.hash(ui.tab.name); 
    }); 

}); 

然而,A)我是新來的jQuery,而不是相信這是高效/安全/「正確的方式去做」,以及B)一定要使用這個只有當你可以肯定的錨的「name」屬性沒有未URI安全的任何字符(即空間)。

UPDATE2:我現在 「解決」 在UPDATE1的問題,但它具有非常難看行:

var name = window.location.hash != "" ? window.location.hash.split("#")[2] : "" 

因爲顯然$ .address.hash(VAL)功能增加了一個「/ #」第一哈希後,但如果我們不使用$。地址。哈希(val)然後externalChange被觸發(通過window.location.hash = val)

相關問題