Javascript 如何实现jQuery边栏和cookie

Javascript 如何实现jQuery边栏和cookie,javascript,jquery,Javascript,Jquery,我已经通过jQueryAPI设置了一个侧栏。现在我注意到当我刷新页面时,边栏会自动关闭 我在互联网上发现了一个cookie,但由于某种原因,它与我的边栏脚本不兼容 我做错了什么 $(document).ready(function() { var sidebar_status = $.cookie("sidebar_status"); if (sidebar_status == null) { $("a#ToggleSidebar").addClass('clo

我已经通过jQueryAPI设置了一个侧栏。现在我注意到当我刷新页面时,边栏会自动关闭

我在互联网上发现了一个cookie,但由于某种原因,它与我的边栏脚本不兼容

我做错了什么

$(document).ready(function() {
    var sidebar_status = $.cookie("sidebar_status");

    if (sidebar_status == null) {
        $("a#ToggleSidebar").addClass('closed');
        $("#sidebar").hide();
    };

    if (sidebar_status == "closed") {
        $("a#ToggleSidebar").removeClass('open');
        $("a#ToggleSidebar").addClass('closed');
        $("#sidebar").css("display", "none");
    };

    if (sidebar_status == "open") {
        $("a#ToggleSidebar").addClass('open');
    };


    $("a#ToggleSidebar").click(function() {
        if ($("a#ToggleSidebar").attr("class") == 'open') {
            $(this).removeClass('open');
            $(this).addClass('closed');
            $.cookie("sidebar_status", "closed", {
                path: '/',
                expires: 100
            });
            $("#sidebar").animate({
                width: 'hide',
                opacity: 'hide'
            }, 'slow');
        } else {
            $(this).removeClass('closed');
            $(this).addClass('open');
            $.cookie("sidebar_status", "open", {
                path: '/',
                expires: 100
            });
            $("#sidebar").animate({
                width: 'show',
                opacity: 'show'
            }, 'slow');
        }
    });
编辑:


有一个像按钮
的东西可以打开一个
。现在,我希望当有人第一次访问页面时,
会关闭。当用户单击
时,会打开
并保存cookie。当用户现在应该刷新页面时,
应该保持打开状态,直到用户使用
再次关闭页面。这就是我无法工作的地方。

检查我的答案jquery cookie插件和如何使用它的情况相同。希望它能帮助你,或者至少能引导你走上正确的方向。

来自OP的评论:现在侧边栏打开,一个cookie保存在计算机上,但当我再次尝试关闭侧边栏时,什么也没有发生

对于jQuery1.6及更高版本,此

if ($("a#ToggleSidebar").attr("class") == 'open') {
应该是这样的(用
prop
替换
attr

但这是最好的

if ($("a#ToggleSidebar").hasClass("open")) {

这个

$(this).removeClass('open');
$(this).addClass('closed');
…可以简单地写成这样(称为链接)


当我们这么做的时候

这:

…可以这样写

if (sidebar_status == null) {
    $("a#ToggleSidebar").addClass('closed');
    $("#sidebar").hide();
} else if (sidebar_status == "closed") {
    $("a#ToggleSidebar").removeClass('open').addClass('closed');
    $("#sidebar").hide();
} else if (sidebar_status == "open") {
    $("a#ToggleSidebar").addClass('open').removeClass('closed');
};

(jQuery
.hide()
jQuery
.css(“显示”、“无”);

什么不起作用?发生了什么,你期望发生什么?看看这个答案,虽然不是你问题的解决方案,而是同一个问题的另一种实现@C.Felix,当有评论要求澄清时,你可以通过编辑它将这一点添加到你的原始帖子中;尤其是当您需要发布更多代码时。@Sparky672,谢谢您的建议!我将在下一个问题中记住这一点;)简单地将SO答案链接到另一个SO答案是不理想的。答案应该是完全独立的。这是我在另一篇关于cookies的帖子上的答案。我应该复制/粘贴我自己的答案吗?为什么不呢?这毕竟是你的答案。@Andres,不幸的是,这对我没有帮助:(我发现了饼干没有保存的问题。我丢失了一个});最后。现在侧边栏打开,一个cookie保存在计算机上,但当我再次尝试关闭侧边栏时,什么也没有发生:(你是说它没有关闭还是没有将操作保存在cookie中?非常感谢!我正在阅读jQuery页面,这时一封电子邮件来了,告诉我有一个新的答案:)
$(this).removeClass('open').addClass('closed');
if (sidebar_status == null) {
    $("a#ToggleSidebar").addClass('closed');
    $("#sidebar").hide();
};

if (sidebar_status == "closed") {
    $("a#ToggleSidebar").removeClass('open');
    $("a#ToggleSidebar").addClass('closed');
    $("#sidebar").css("display", "none");
};

if (sidebar_status == "open") {
    $("a#ToggleSidebar").addClass('open');
};
if (sidebar_status == null) {
    $("a#ToggleSidebar").addClass('closed');
    $("#sidebar").hide();
} else if (sidebar_status == "closed") {
    $("a#ToggleSidebar").removeClass('open').addClass('closed');
    $("#sidebar").hide();
} else if (sidebar_status == "open") {
    $("a#ToggleSidebar").addClass('open').removeClass('closed');
};