Сохранение состояния меню при перезагрузке страницы

0

У меня есть меню, в котором я хочу, чтобы состояние открытого/закрытого состояния сохранялось, если страница перезагружается и когда пользователь нажал, чтобы закрыть или открыть.

Я использую плагин для файлов 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;
});
});  
Теги:
cookies

1 ответ

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!

  • 0
    Спасибо, имеет смысл. Может быть, вы знаете, как захватить текущее время.
  • 0
    Я обновил свой ответ примером для получения текущего времени и установки его достаточно далеко, чтобы срок действия файла cookie истек. Надеюсь это поможет!
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню