2011-08-10 45 views
0

我只是有一個可隱藏塊的菜單。爲了在訪問期間記住它們的狀態,我決定用jQuery.cookie() 我的代碼是非常基本的:jQuery.cookie:儘管代碼非常簡單,但無需更新cookie

jQuery(document).ready(function(){ 
    $(".titre_acordeon").next().hide(); 
    $(".titre_acordeon").each(function() { 
     jQuery.cookie($(this).parent().attr("id"),false, {path: "/"}); 
    }); 
    $(".titre_acordeon_0").next().show(); 
    $(".titre_acordeon_0").each(function() { 
     jQuery.cookie($(this).parent().attr("id"),true, {path: "/"}); 
    }); 
}); 
jQuery(document).ready(function(){ 
    $(".titre_acordeon, .titre_acordeon_0").click(function() { 
     $(this).next().toggle("medium"); 
     var id = $(this).parent().attr("id"); 
     var valeur_id = jQuery.cookie(id); 
     alert(valeur_id) 
     if (valeur_id == true) 
     { 
      jQuery.cookie(id, false, {path: "/"}); 
     } 
     else if (valeur_id == false) 
     { 
      jQuery.cookie(id, true, {path: "/"}); 
     } 
     alert(jQuery.cookie(id)) 
    }); 
}); 

「 作爲也不例外,Cookie值永遠不會改變:顯示/隱藏作品如果我通過改變「如果(valeur_id ==真)」,「如果(valeur_id)」,餅乾改變,但只有一次

我很絕望!這應該是easyyy!

THX閱讀本!

+0

哎呀我忘了說alert(valeur_id)和alert(jQuery.cookie(id)) 總是返回相同的假或真,取決於初始值 – flop25

回答

2

如果您使用的是「插件在」

https://github.com/carhartl/jquery-cookie/blob/master/jquery.cookie.js

你的問題是,你正在寫一個布爾值到您的Cookie,這是翻譯上寫入cookie的字符串。從cookie中讀回不會反向翻譯。所以,不管你把truefalse在cookie中,你的支票

if (valeur_id == true) 

始終計算爲布爾值true。這是因爲"true""false"都是在這樣的檢查中評估爲「真實」的字符串。

如果您想堅持使用該庫,您應該向該cookie寫入字符串並期望讀取字符串。

$.cookie('cookieName', 'true'); 

和:

if ($.cookie('cookieName') === 'true') 

重要提示:

順便說一句,如果你運行你的頁面上的所有代碼示例,你永遠不會看到點擊的結果在您重新加載頁面時讀取cookie。您的第一個代碼塊會覆蓋前一頁加載的點擊次數。

+0

是的我知道它會覆蓋^^它的預備..我是js的新手,沒有開發人員,所以thx突出我的錯誤! – flop25

+0

沒問題 - 使用字符串的建議是否解決了您的問題? – JAAulde

+0

sry我沒有注意到你最後的帖子:是的,這是問題 thx再次 – flop25

相關問題