1

私がやろうとしているのは、サイドバーの開閉を切り替えることです。これは正常に機能していますが、サイトを閲覧するときとページに戻るときに、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/ で見ることができます。サイドバーを閉じてから、メイン ページに戻ったときにフォーラムを参照すると、まだ閉じられています。

どんな助けでも大歓迎です

4

3 に答える 3

0

OK thxみんな、でも私はそれをソートしました、そのたくさんのコードは.toggle()ではなく.show()/。hide()のたくさんとして欲しかったのですが、今はうまくいくでしょう:

$('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(); 
}
于 2011-01-16T08:51:32.863 に答える
0

Cookie の存在ではなく、その値を確認する必要があります。また、Cookie の値を としてハードコーディングしていますvalueshowまたはに変更しhideます。

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

// when it is hidden

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

Cookieの値を確認します

if($.cookie('side_cookie') === "show") {
    // code for showing side bar
}
else {
    // code for hiding the side bar
}
于 2011-01-16T07:23:05.757 に答える
0

問題は if 条件 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();
   }
});
于 2011-01-16T06:19:50.727 に答える