2016-04-28 77 views
0

我需要記住單擊框的狀態(如果顯示或隱藏)。我正在使用cookies插件。Jquery cookie - 切換框

當我點擊#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);',看看cookie設置 –

回答

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

是否加載了cookie?控制檯中的任何錯誤?我更新了腳本以更清晰 – mplungjan

+0

我的錯,您的代碼按預期工作,問題在於,我在本地測試了它...... Chrome不允許本地Cookie。但是你的代碼絕對有效,非常感謝! –