Помните jQuery 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'); }
});

});

Я был уверен, что это сработает, но оказалось, что подменю не открывается при загрузке страницы и не реагирует на щелчок. Что я здесь делаю неправильно? Любая помощь приветствуется >_‹

Редактировать: хорошо, поэтому после дополнительных исследований я изменил свою функцию slideToggle на это: $(".f1").click(function(){

        $('.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();}

И я не понимаю, почему эта строка не работает... как мне проверить значение куки, чтобы она работала D:


person Peanutz    schedule 24.04.2011    source источник


Ответы (1)


Вы никогда не устанавливаете значение shouldShow на основе состояния самой страницы — только на состоянии файла cookie. При нажатии на меню вам необходимо обновить файл cookie на основе состояния меню, а не значения shouldShow (которое никогда не обновляется после загрузки страницы).

person Matt Ball    schedule 24.04.2011