设置cookie以记住手风琴状态

时间:2012-12-28 17:23:26

标签: jquery cookies accordion

在过去的几天里,我一直在尝试创建一个cookie(使用https://github.com/carhartl/jquery-cookie)来记住我的手风琴菜单的开放状态..我已经梳理了谷歌和以前的答案,但到目前为止我有没有运气让它上班。

正在生成手风琴菜单的

Here is the code ..

如果有人能帮忙解释一下,我将不胜感激。

3 个答案:

答案 0 :(得分: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。如您所见,它非常简单。由于您未使用UI,因此该答案可能对您无效。如果是这种情况,我可能会在一段时间内为现有解决方案添加cookie支持。

答案 1 :(得分:0)

我使用来自Klaus Hartl的Cookie插件编写了此代码片段来执行此操作:

cookieName = 'myHotCookie';

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

parseInt似乎是必要的,因为geting id是渲染为字符串。

答案 2 :(得分:0)

在我的情况下安装了cms contao 3.x和jquery cookie插件。 尝试使用jquery 1.9(chrome / ff)并使用此代码:

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')));
        }
  });