在过去的几天里,我一直在尝试创建一个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')));
}
});