статус jquery и cookie - PullRequest
       33

статус jquery и cookie

1 голос
/ 16 января 2011

То, что я пытаюсь сделать, - это открывать и закрывать боковую панель, которая работает нормально, но я также хочу, чтобы cookie запоминал состояние боковой панели при просмотре сайта и при возврате на страницу его на

, то есть:если закрыто, то закрыто, если открыто, то будет открыто:

$(document).ready(function($) {
 $('a#side').click(function(){
  $('#sidebar').toggle();
$('a#side').text($(this).text() == 'Show' ? 'Hide' : 'Show');
  $.cookie('side_cookie', 'value');
 return false;
});
if($.cookie('side_cookie')) { 
$('#sidebar').hide(); 
   } else {
$('#sidebar').show();
   }
});

Текущий код, приведенный выше, просто запоминает, был ли он закрыт, и остается закрытым до завершения сеанса, поэтому вы должны открывать его каждый раз, когда возвращаетесь на страницу...

Пример того, чего я пытаюсь достичь, можно увидеть на vbulletin.com/forum/, если вы закроете боковую панель, а затем просмотрите форумы, когда вернетесь на главную страницу, она все еще закрыта, и наоборот.

любая помощь приветствуется

Ответы [ 3 ]

0 голосов
/ 16 января 2011

Вы должны проверить значение куки, а не его существование. Также вы жестко определяете значение cookie как value. Измените его на show или hide.

// when it is shown
$.cookie('side_cookie', 'show');

// when it is hidden

$.cookie('side_cookie', 'hide');

и проверьте значение куки

if($.cookie('side_cookie') === "show") {
    // code for showing side bar
}
else {
    // code for hiding the side bar
}
0 голосов
/ 16 января 2011

Хорошо, ребята, но я все разобрал, кода гораздо больше, чем я хотел, так как .show () /. Hide (), а не .toggle () работает, или теперь работает:

$('a#hide').click(function(){
  $('a#hide,#sidebar').hide();
  $('a#show').show();
  $.cookie('side_cookie_hidden', 'hidden');
  $.cookie('side_cookie_show', null);
 return false;
});

$('a#show').click(function(){
  $('a#show').hide();
  $('a#hide,#sidebar').show();
  $.cookie('side_cookie_show', 'show');
  $.cookie('side_cookie_hidden', null);
 return false;
});

if($.cookie('side_cookie_hidden')) { 
$('a#show').show();
$('a#hide,#sidebar').hide(); 
   } else {
$('a#show').hide();
$('a#hide,#sidebar').show(); 
}
0 голосов
/ 16 января 2011

Я думаю, что проблема заключается в условии if ($. Cookie ('side_cookie')). Попробуйте это:

$(document).ready(function($) {
 $('a#side').click(function(){
  $('#sidebar').toggle();
$('a#side').text($(this).text() == 'Show' ? 'Hide' : 'Show');
  $.cookie('side_cookie', $(this).text());
 return false;
});
if($.cookie('side_cookie')=='Hide') { 
$('#sidebar').hide(); 
   } else {
$('#sidebar').show();
   }
});
...