【问题标题】:Jquery cookie - toggle boxJquery cookie - 切换框
【发布时间】:2016-08-23 08:11:29
【问题描述】:

我需要记住点击框的状态(如果显示或隐藏)。我正在为此使用 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 永远不会计算,所以它会一直隐藏。

【问题讨论】:

  • 试试$.cookie('click_cookie', 1); 看看是否设置了cookie

标签: javascript jquery cookies toggle


【解决方案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");
  });
});

【讨论】:

  • 您好,感谢您的回答。行为仍然相同 - 在 F5 之后它被隐藏了。
  • cookie 加载了吗?控制台中的任何错误?我更新了脚本以更清晰
  • 我的错,您的代码按预期工作,问题是,我在本地测试它... Chrome 不允许本地 cookie。但是您的代码绝对有效,非常感谢!
  • 我认为任何浏览器都没有。
  • 你的字符串想法是完全正确的,它适用于 "false" "true" 但不适用于 false true...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多