我只有一个可以隐藏的块的菜单。为了在访问期间记住他们的状态,我决定使用jQuery.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值永远不会改变:显示/隐藏工作,如果我将“if(valeur_id == true)”更改为“if(valeur_id)”,则cookie会更改但只会改变一次
我太绝望了!这应该很容易!
这是为了阅读本文!答案 0 :(得分:2)
如果您使用此“插件”
https://github.com/carhartl/jquery-cookie/blob/master/jquery.cookie.js
您的问题是您正在为您的cookie编写一个布尔值,该cookie在写入cookie时被转换为字符串。从cookie中读回不会反过来翻译。因此,无论您是将true
还是false
放入Cookie中,都需要检查
if ( valeur_id == true)
总是计算为布尔值true。这是因为"true"
和"false"
都是在这种检查中评价为“真实”的字符串。
如果你想坚持使用那个库,你应该在cookie中编写字符串,并期望读取字符串。
$.cookie( 'cookieName', 'true' );
和
if ( $.cookie( 'cookieName' ) === 'true' )
重要提示:
顺便说一句,如果你在页面上运行整个代码示例,那么当你重新加载页面时,你永远不会看到点击读取cookie的结果。您的第一个代码块会覆盖先前页面加载点击所设置的内容。