如何在jQuery cookie中存储数组?

fad*_*ril 4 jquery

我正在打开一个基于此如何在jquery cookie中存储数组的新线程.我正在使用almog.ori的功能:

var cookieList = function(cookieName) {
//When the cookie is saved the items will be a comma seperated string
//So we will split the cookie by comma to get the original array
var cookie = $.cookie(cookieName);
//Load the items or a new array if null.
var items = cookie ? cookie.split(/,/) : new Array();

//Return a object that we can use to access the array.
//while hiding direct access to the declared items array
//this is called closures see http://www.jibbering.com/faq/faq_notes/closures.html
return {
    "add": function(val) {
        //Add to the items.
        items.push(val);
        //Save the items to a cookie.
        $.cookie(cookieName, items);
    },
    "clear": function() {
        //clear the cookie.
        $.cookie(cookieName, null);
    },
    "items": function() {
        //Get all the items.
        return items;
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

在click事件上获取一个index元素数组:

var list = new cookieList("test");
$(img).one('click', function(i){
while($('.selected').length < 3) {
    $(this).parent()
        .addClass("selected")
        .append(setup.config.overlay);

    //$.cookie(setup.config.COOKIE_NAME, d, setup.config.OPTS);
    var index = $(this).parent().index();

    // suppose this array go into cookies.. but failed
    list.add( index );
    // this index goes in array
    alert(list.items());

    var count = 'You have selected : <span>' + $('.selected').length + '</span> deals';
    if( $('.total').length ){
        $('.total').html(count);
    }

} 
});
Run Code Online (Sandbox Code Playgroud)

当我获得项目列表时,它返回null但是当我在onclick事件中发出警报时,最终它会将值推送到该数组中.但是当我试图检索回cookie时,它返回null.请帮忙...

Nic*_*ver 10

这一行:

$.cookie(cookieName, items);
Run Code Online (Sandbox Code Playgroud)

应该也从数组中创建字符串,如下所示:

$.cookie(cookieName, items.join(','));
Run Code Online (Sandbox Code Playgroud)

这样,当通过加载数组时cookie.split(/,/),它会得到一个它所期望的字符串(以逗号分隔).