Помните jQuery slideToggle на разных страницах - PullRequest
0 голосов
/ 24 апреля 2011

У меня есть меню с подменю, когда вы нажимаете на название меню, открывается подменю, теперь я хочу, чтобы браузер запомнил, какое меню открыто, а какое нет.

Это одно из меню

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

});

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

Edit: Итак, после еще одного исследования я изменил свою функцию 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 голосов
/ 24 апреля 2011

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

...