记住jQuery slideToggle在不同的页面上

时间:2011-04-24 14:55:06

标签: jquery cookies menu slidetoggle

我有一个带子菜单的菜单,当你点击子菜单打开的菜单名称时,现在我想要的是让浏览器记住哪个菜单是打开的,哪个菜单不是。

这是菜单中的一个

<div id="block">
<div class="flip1"><img src="/test/images/arrow_right.png"><div class="f1">Menu title</div></div>
<hr />
<div class="panel1">
<a href="">submenu title</a><br />
<a href="">submenu title</a>
</div></div>
到目前为止

和我的jQuery代码

$(document).ready(function(){
//check if the menu should be open or not and open/hide it
var shouldShow = jQuery.cookie('show_desc') == 'yep';
if( shouldShow ) {jQuery('.panel1').show();}
else {jQuery('.panel1').hide();}

//toggle submenu on click and make a cookie to remember if it should open or hide the menu
$(".f1").click(function(){
$(".panel1").slideToggle("fast");
    if( shouldShow ) {jQuery.cookie('show_desc', 'nope');}
else {jQuery.cookie('show_desc', 'yep'); }
});

});

我非常有信心这会起作用,但事实证明,当页面加载时它没有打开子菜单,并且它在点击时没有反应。我在这做错了什么?感谢任何帮助&gt; _&lt;

编辑: 好的,经过一些研究后我将slideToggle功能更改为:            $(”。F1" )。单击(函数(){

        $('.panel1').slideToggle('fast',function(){
            if ($('.panel1').is(':hidden')) {
                 var state = "closed";
            } else {
                var state = "open";
            }

        });
         jQuery.cookie('show_desc', state);
    });  

它起作用,但只是在开始时没有检查cookie。

  var shouldShow = jQuery.cookie('show_desc') == 'open';
   if( shouldShow ) {jQuery('.panel1').show();}
   else {jQuery('.panel1').hide();}

我不明白为什么这行不起作用...如何检查cookie的值以便它可以工作D:

1 个答案:

答案 0 :(得分:0)

您永远不会根据页面本身的状态设置shouldShow的值 - 仅限于Cookie的状态。单击菜单时,您需要根据菜单的状态更新cookie,而不是shouldShow的值(页面加载后永远不会更新)。