jQuery UI手风琴+ Cookies-默认情况下关闭?

3
通过使用jQuery UI手风琴,我成功地使用cookies在刷新页面时记住了最后的活动状态。但是我无法做到以下两点:
  1. 第一次访问时将其设置为折叠状态

  2. 如果用户手动折叠后再打开,则cookie不能记住此状态

我尝试创建一个具有“active”选项条件语句的函数,但未成功。 http://jsfiddle.net/77xC9/18/
jQuery(document).ready(function(){
        var act = 0;
        $( "#accordion" ).accordion({
            create: function(event, ui) {
                //get index in cookie on accordion create event
                if($.cookie('saved_index') != null){
                   act =  parseInt($.cookie('saved_index'));
                }
            },
            change: function(event, ui) {
                //set cookie for current index on change event
                $.cookie('saved_index', null);
                $.cookie('saved_index', ui.options.active);
            },
            active:parseInt($.cookie('saved_index')),
            collapsible: true
        });
    });

2个回答

11

共享代码在jQuery UI 1.9+中不起作用。下面的代码可以正常工作!

jQuery(document).ready(function() {
    $("#accordion").accordion({
        activate: function(event, ui) {
            $.cookie('saved_index', $("#accordion").accordion("option", "active"));
        },
        active: parseInt($.cookie('saved_index')),
        collapsible: true
    });
});

1
为什么需要 $.cookie('saved_index', null); 这行代码? - Filip Spiridonov
@FilipSpiridonov 实际上,那行代码是不必要的,即使没有它也可以正常工作。 - Chronozoa

1
jQuery(document).ready(function(){
    $( "#accordion" ).accordion({
        change: function(event, ui) {
            $.cookie('saved_index', ui.options.active !== false ? ui.options.active : null);
        },
        active: $.cookie('saved_index') != null ? parseInt($.cookie('saved_index')) : false,
        collapsible: true
    });
});

提示:如果您以本地文件的方式打开页面,Google Chrome将不接受cookie。


这解决了问题#1(第一次访问时显示为折叠)。 但是我似乎仍然无法让它记住用户是否已折叠菜单。(确保所有菜单都关闭,然后刷新)。 http://jsfiddle.net/77xC9/25/ - Joe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接