2012-12-28 43 views
1

過去幾天我一直在嘗試創建一個cookie(使用https://github.com/carhartl/jquery-cookie),它記住了我的手風琴菜單的打開狀態。我已經梳理了谷歌和以前的答案,但這樣很遠我沒有運氣讓它工作。設置cookie以記住手風琴狀態

Here is the code所產生的手風琴菜單..

如果有人可以幫助闡明這光我將不勝感激..

+0

簡單的解決方案,修改URL一點以保持手風琴ID。 – Joddy

+1

@Joddy這是一個更簡單的解決方案嗎?這不會在瀏覽器會話中提供持久的手風琴狀態。 –

回答

3

我寫了一個版本,這個前一段時間,並把它在網上:http://jaaulde.com/test_bed/stickyaccordion/

我用下面的代碼:前段時間

$(function() { 
    var cookieName = 'stickyAccordion'; 

    $('#accordion').accordion({ 
     active: ($.cookies.get(cookieName) || 0), 
     change: function (e, ui) { 
      $.cookies.set(cookieName, $(this).find('h3').index(ui.newHeader[0])); 
     } 
    }); 
}); 

,因爲這是,它使用jQuery 1.4.1和jQuery UI 1.7.2。

它也用我自己的個人JavaScript/jQuery cookies library。如果你想使用carhartl這是一個完全有效的選擇。您只需將他的電話替換爲$.cookies.set$.cookies.get即可。

編輯:我很抱歉,當我看到您的提問提到jQuery和手風琴時,我假定您的意思是jQuery UI's accordion。正如你所看到的,它使它非常簡單。由於您未使用用戶界面,因此此答案可能對您無效。如果是這種情況,我可能會在一段時間內爲現有解決方案添加Cookie支持。

+0

這個特殊的手風琴沒有使用jQuery UI來創建元素,但我仍然通過jquery-cookie的文檔小打小發,所以也許我會很幸運。但是,如果你確實有時間再次查看代碼,那將會很棒。 –

+0

我從旅途中回來 - 這個時候你在這個問題上站在哪裏? – JAAulde

+0

我不得不使用parseInt強制將cookie中的內容變成一個整數,以使其在IE 11中正常工作 –

0

我寫這個片段做,與cookie的插件從Klaus Hartl

cookieName = 'myHotCookie'; 

$(".accordion").accordion({ 
    'active' : (parseInt($.cookie(cookieName)) || false), 
    'header' : 'h3', 
    activate: function (event, ui) { 
     $.cookie(cookieName,parseInt($(this).accordion('option','active'))); 
    } 
}); 

parseInt函數似乎是必要的,因爲歌廳ID是呈現爲字符串。

0

在我的情況下爲cms contao 3.x和jquery cookie插件安裝。 與jquery 1.9(鉻/ FF)tryed它並將其與該代碼的工作:

var cookieName = 'myHotCookie'; 
    $(document).accordion({ 
     // Put custom options here 
     heightStyle: 'content', 
     header: 'div.toggler', 
     collapsible: true, 
     animated: 'slide', 
     active : (parseInt($.cookie(cookieName)) || 0), 
     activate: function (event, ui) { 
      $.cookie(cookieName,parseInt($(this).accordion('option','active'))); 
     } 
    });