设置cookie以记住手风琴状态



在过去的几天里,我一直在尝试创建一个cookie(使用https://github.com/carhartl/jquery-cookie)记得我手风琴菜单的打开状态。。我已经在谷歌和之前的答案中进行了梳理,但到目前为止,我还没有成功。

这是生成手风琴菜单的代码。。

如果有人能帮我阐明这一点,我将不胜感激。。

我不久前写了一个版本,并将其放到了网上: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 cookie库。如果你想使用carhartl,这是一个非常有效的选择。您只需要将我对$.cookies.set$.cookies.get的呼叫替换为他的对等呼叫即可。

编辑:我很抱歉,当我看到你的提问提到jQuery和手风琴时,我以为你指的是jQuery UI的手风琴。正如你所看到的,它使它变得非常简单。由于您没有使用UI,因此此答案可能对您无效。如果是这样的话,我可能会挤出一些时间来为您现有的解决方案添加cookie支持。

我用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被呈现为字符串。

在我的案例中,针对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')));
        }
  });

最新更新