2014-02-26 65 views
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; 
}); 
}); 

回答

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

謝謝,有道理。你會碰巧知道如何抓住當前時間嗎? – leanda

+0

我已經用一個例子更新了我的答案,以獲取當前時間並將其設置回足夠遠以使cookie過期。希望這可以幫助! – binaryatrocity

+0

好吧,現在我有這個,但菜單仍然沒有關閉。 – leanda

相關問題