2015-06-11 19 views
0

嗨,我正在處理一個非常嵌套的手風琴。我想要做的是每當用戶改變手風琴的狀態時,我想在URL中記錄這種變化,這樣當我刷新時,我可以讀取URL並創建一個具有相同狀態的新手風琴。 我已經知道$(「.selector」).accordion(「option」,「active」),但是關於它的一切都讓我感到困惑。如何保存一個嵌套的JqueryUI手風琴的狀態,並通過閱讀後重新打開它

首先我選擇什麼作爲「。選擇器」,因爲我最初使用「div.folder」作爲選擇器來創建手風琴,但我認爲jQueryUI在內部使用它,並且它在檢查時不顯示html頁面。這是我創建手風琴的方式。

$("div.folder").accordion({collapsible: true, active :false, heightStyle: "content" , activate: function(event, ui) { console.log($("#accordion") 
       .accordion("option", "active"))}}); 

第二次當它工作時它會返回什麼?一個數字?它是否具有整棵樹的狀態? 第三次當我有狀態我該如何讓jqueryUI根據特定狀態重新創建手風琴? 最後,我不知道這是否會導致嚴重的問題,但我有兩個手風琴一起工作,因爲這是一個代碼片段。

//uses Jquery UI to turn the file system into a collapsible menu 
    $("div.folder").accordion({collapsible: true, active :false, heightStyle: "content" , activate: function(event, ui) { console.log($("#accordion") 
       .accordion("option", "active"))}}); 
    $("div.file").accordion({collapsible: true, active :false, heightStyle: "content", activate: function(event, ui) {console.log($("#accordion") 
       .accordion("option", "active"))}}); 

在查詢狀態時會造成問題嗎?我不完全確定我是否正在處理一到兩個手風琴。

回答

0

好了很多反覆試驗後,我終於開始工作了。我發現在網絡上進行研究沒有太大用處,所以我盡力幫助那些可能會遇到這個問題的人。我即將分享的內容適用於我的具體實現,它可能不適用於其他實現,因此我會盡可能地嘗試並澄清我的實現。

首先問題出在我身上,需要嵌套jquery ui手風琴。我這樣做的方式是讓所有目標標籤都屬於同一個類。當我調用.accordion方法時,我在整個班級都做了這個。這使我的情況與我在網絡上遇到的所有情況都不同。由於這種情況,這個大手風琴幾乎就像是一個小手風琴的名單。如果我問

$(.selector).accordion("option", "active",) 

它只是告訴我0「在一定意義上,」因爲那裏有多個手風琴,而且不知道該選擇哪一個。

我發現偶然的解決方案是,當我到絲網印刷

$(.selector).accordion({ activate: function(event, ui) {}}) 

。我發現Jquery UI正在處理我的大手風琴,就好像它是一組單手風琴一樣。所以我回到了我的代碼中,並確保每一個「單位」手風琴都有自己獨特的ID。有了這些信息,我使用了一個事件處理程序,每當我更改手風琴時,它都會將打開的「迷你手風琴」的id附加到url(或者,如果已關閉,請將其刪除)。

這就是我如何「保存」狀態。要重新打開我讀的URL的正確狀態,解析它,然後爲每個唯一的ID我簡單地稱爲

$("uniqueID").accordion("option", "active",0) 

這將從根本上找到「小手風琴」,打開它。因爲這是爲所有打開的「小型手風琴」完成的,您的大手風琴將會按照您想要的方式解開它。

如果有人正在閱讀本文,請提出您需要的任何問題,如果我記得,我會回答。

相關問題