在页面重新加载时保存菜单状态

时间:2014-02-26 15:01:47

标签: javascript jquery cookies

我有一个菜单,我希望状态打开/关闭状态在页面重新加载以及用户单击关闭或打开时保持不变。

我正在使用一个cookie插件而且我差点就在那里,但是我在设置关闭cookie时遇到问题,以便记住关闭状态,开放cookie仍然存在。

$(document).ready(function() {
// Open / Close Panel According to Cookie //
if ($.cookie('filtermenu') === 'open'){
    $('.filter').show(); // Show on Page Load / Refresh without Animation
}
else {
}

 if ($.cookie('filtermenu') === 'close' || $.cookie('filtermenu') === null){

    $('.filter').hide(); // Show on Page Load / Refresh without Animation
}
else {
}


// Toggle Panel and Set Cookie //
$('#filter-menu').click(function(){
    $('.filter').slideToggle('fast', function(){
        if ($('#filter-menu').is(':hidden')) {
            $.cookie('filtermenu', 'close', { expires: 30 });
        } else {
            $.cookie('filtermenu', 'open');
        }
    });
    return false;
});
});

任何人都可以看到我做错了什么。

感谢。

更新:抱歉,现在我已经拥有了这个,但它仍未关闭,我是否错误地使用了日期对象?

Ok, so now I have this, but the menu still doesn't stay closed.

$(document).ready(function() {
// Open / Close Panel According to Cookie //
if ($.cookie('filtermenu') === 'open'){
    $('.filter').show(); // Show on Page Load / Refresh without Animation
}
else {
}

 if ($.cookie('filtermenu') === 'close' || $.cookie('filtermenu') === null){
    $('.filter').hide(); // Show on Page Load / Refresh without Animation
}
else {
}


// Toggle Panel and Set Cookie //
$('#filter-menu').click(function(){
    $('.filter').slideToggle('fast', function(){


var now = new Date();
var time = now.getTime();
time -= 60 * 1000;
now.setTime(time);
 $.cookie('filtermenu', 'open', {expires: now});

        if ($('#filter-menu').is(':hidden')) {
            $.cookie('filtermenu', 'close', { expires: 30 });
        } else {
            $.cookie('filtermenu', 'open');
        }
    });
    return false;
});
});  

1 个答案:

答案 0 :(得分:0)

您将要在设置关闭cookie之前重新设置开放cookie,其过期日期早于当前时间。这样,开放式cookie将立即过期,并且您关闭的cookie将保留。

更新 - 获取时间

您已经询问了如何获取JS中的当前时间,这里有一些示例代码:

var now = new Date();
var time = now.getTime();
time -= 60 * 1000;
now.setTime(time);

这将创建一个名为Date的新now对象,并使用getTime()从中提取时间。然后我们减去一分钟的时间(时间以毫秒为单位,所以60 * 1000),然后将日期设置回那个时间。您现在可以使用此Date对象来设置cookie的到期时间!

相关问题