2012-09-25 45 views
1

我目前正在創建一個簡單的待辦事項清單,我會很感激,如果有人可以幫助我如何使用JQuery,Javascript cookies?

我有2個功能設置Cookie :)並獲得餅乾:

function setCookie(key, value) { 
    var expires = new Date(); 
    expires.setTime(expires.getTime() + 31536000000); 
    document.cookie = key + '=' + value + ';expires=' + expires.toUTCString(); 
} 

function getCookie(key) { 
    var keyValue = document.cookie.match('(^|;) ?' + key + '=([^;]*)(;|$)'); 
    return keyValue ? keyValue[2] : null; 
} 

有一個按鈕(id爲#add_todo)將任務添加到待辦事項列表(帶類.todo_list)。 我將文本輸入$('#todo_description')。val()的值設置爲cookie。

$(document).ready(function() { 
$('#add_todo').click(function() { 

    setCookie('test', $('#todo_description').val()); 
    var todoDescription = $('#todo_description').val(); 

    $('.todo_list').prepend(
     div class="todo" 
      +checkbox    //I avoided html brackets here 
      + getCookie('test') 
      +delete_button 
      /div 
     ); 
}); 

一切工作正常,但是當我重新加載網頁我以前添加的任務不顯示,我明白我做錯了。我想存儲整個div(class =「todo」),其中包含todoDescription,複選框,刪除按鈕和樣式。我試圖將任務存儲在數組中,但無法逐個檢索其元素..提前感謝!

回答

0

最簡單的答案是使用a plugin like Mr. Hartl's jQuery cookies(我經常使用這個)。

<script src="jquery.cookies.js"></script> 
<script> 
    // of course, you no longer need these functions, but just plugging this into your example... 

    function setCookie(key, val) { 
     var expires = new Date().getTime() + 31536000000; 
     $.cookie(key, val, { expires: expires, path: '/' }); 
    } 

    function getCookie(key) { 
     return $.cookie(key); 
    } 
</script> 

如果您需要重新發明cookie切割器,您可能需要在您的問題中解釋。

+0

或者只是'var getCookie = $ .cookie;' – Barmar

1

嘗試將整個標記塊存儲到cookie中可能不是一個好主意。 Cookie更適合於存儲小型數據片段。

我試圖存儲陣列的任務,但無法檢索一個

什麼是從遍歷數組阻止你它的元素嗎?

無論如何,這裏可能存在一個基本的設計缺陷,那就是您不應該試圖將大量數據存儲到cookie中。 Cookies只能容納幾千字節的數據。考慮將實際數據存儲在具有更多容量的另一個商店中。這是一個網站嗎?如果存在後端,那麼它應該存儲在後端的數據庫中,並且cookie數據僅用於對用戶進行身份驗證和區分。