2016-04-28 15 views
0

クリックしたボックスの状態(表示されている場合と表示されていない場合)を覚えておく必要があります。私はこのためにクッキープラグインを使用しています。Jquery cookie - toggle box

私が#clickable h3をクリックすると、私は隠されているか公開されますか#clickable p ...そして私はそれを隠しておく必要があります/ F5の後に明らかに(それは状態を覚えています)。

最初の読み込み時に、このボックスは非表示にする必要がありますが、JavaScriptが存在しない場合は常に表示されます。

$(document).ready(function(){ 
    /* On load show/hide box depending on cookie */ 
    if($.cookie('click_cookie') == true){ 
     $.cookie('click_cookie', true); 
     $("#clickable p").show(); 
    } else { 
     $.cookie('click_cookie', false); 
     $("#clickable p").hide(); 
    } 

    /* When clicked */ 
    $("#clickable h3").click(function(){ 
     /* Animate box */ 
     $("#clickable p").animate({ 
      height: "toggle", 
      opacity: "toggle" 
     }) 
     /* Toggle cookie */ 
     if($.cookie('click_cookie') == true){ 
      $.cookie('click_cookie', false); 
     } else { 
      $.cookie('click_cookie', true); 
     } 
    }); 
}); 

問題が意図した通りに動作しないということである:
はここに私のコードです。ボックスはF5の後に常に隠されています。 $.cookie('click_cookie') == trueは評価されないため、常に非表示になります。

+0

は '$の.cookie( 'click_cookie'、1)をしてみてください;'とクッキーがこんにちは –

答えて

1

これを試してください。 $の.cookie戻り、文字列を設定します。

$(function(){ 
    /* On load show/hide box depending on cookie */ 
    $("#clickable p").toggle($.cookie('click_cookie') == "true"); 

    /* When clicked */ 
    $("#clickable h3").click(function(){ 
    /* Animate box */ 
    $("#clickable p").animate({ 
     height: "toggle", 
     opacity: "toggle" 
    }) 
    /* Toggle cookie */ 
    var show = $.cookie('click_cookie') =="true"; // also false if no cookie at all 
    $.cookie('click_cookie',show?"false":"true"); 
    }); 
}); 
+0

設定されているかどうかを確認し、あなたの答えに感謝。振る舞いはまだ同じです.F5の後は隠れています。 –

+1

クッキーはロードされていますか?コンソールにエラーがありますか?私はスクリプトをもっとクリアに更新しました – mplungjan

+0

あなたのコードは正常に動作していますが、問題はローカルでテストしました... Chromeはローカルクッキーを許可していません。しかし、あなたのコードは間違いなく動作します、ありがとう! –