2012-07-19 126 views
4

随着jQuery UI的手风琴,我刷新页面级的时候很成功使用cookies记住上次工作状态但是我不能:jQuery UI Accordion + Cookies - 默认关闭?

  1. 设置为瘫倒在第一次访问

  2. 有饼干记住,如果用户手动开启倒塌

后,我一直在努力,试图在“活动”选项创建与条件语句的功能,但没有成功。

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

PS:如果你打开你的页面为本地文件谷歌浏览器不接受cookies。

+0

解决了问题#1(显示为首次访问时折叠)。不过,如果用户折叠了菜单,我仍然无法记住它。 (确保所有菜单都关闭,然后点击刷新)。 http://jsfiddle.net/77xC9/25/ – Joe 2012-07-20 02:03:14

+0

我编辑了代码。 – Researcher 2012-07-20 06:28:19

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);'line? – 2014-09-19 13:30:14

+0

@FilipSpiridonov事实上,这条线是不需要的,它没有工作正常。 – Chronozoa 2015-07-31 14:57:54