如何记住Jquery的最后状态?

时间:2010-03-26 23:10:10

标签: jquery cookies menu

我有一个菜单,子菜单可以切换(隐藏/显示类型交易)。 是否有一种相对简单的方法来记住菜单的最后状态? (单击标题时隐藏/显示子菜单并更改标题的样式,以便背景箭头更改(向上/向下))。 它工作正常,但我希望它记住最后一个状态,所以当用户转到网站上的另一个页面并返回时,菜单显示与用户离开它相同的方式。 我对饼干不是很好,所以任何帮助都会受到赞赏。 是的,菜单是使用PHP从db动态生成的。 现在只有2个带子菜单的标题,但会有更多,所以我需要一些对任意数量的子菜单都“可扩展”的方法。 一次访问也没有必要记住它。

目前的网址是这样的: http://valleyofgeysers.com/geysers.php

1 个答案:

答案 0 :(得分:4)

您可以使用jQuery cookie plugin for this

只需在隐藏,显示时设置cookie,然后在加载时设置基于任何cookie设置显示的内容。您可以通过命名Cookie来执行此操作:"display" - this.id

如果你使用<div id="unique">包装每个菜单,就像你拥有geysers一样(所以我们有一个唯一的ID来设置一个cookie),这样的东西应该有效:

$('h3').next('.g_menu').filter(function() {
  return $.cookie("expanded-" + $(this).parent("[id]").attr("id"));
}).hide();

$('h3').click(function(){
  $(this).toggleClass('closeit').toggleClass('openit');
  var menu = $(this).next('.g_menu');
    if(menu.is(':visible')) {
        menu.fadeOut(50);
        $.cookie("expanded-" + $(this).parent().attr("id"), true);
    } else {
        menu.fadeIn(980);            
        $.cookie("expanded-" + $(this).parent().attr("id"), null);
    }
});​

要完成这项工作,请将<h3 class="openit">Other</h3><div class="g_menu"></div>包裹在<div id="other"></div> You can play with a sample to see this in action here中。