使用插件删除Jquery cookie

时间:2009-10-25 05:41:45

标签: jquery cookies

我在删除特定cookie时遇到一些问题。我已经成功创建了cookie,但问题是在调用特定的del id时删除了cookie。这是完整的代码,有人可以指出我错过了什么,如果可能的话,通过帮助我解决它来指导我吗?

    jQuery(function($){ 

    $("a[id^='savebook-']").click(function(){
    match = this.id.match(/savebook-(\d+)/);
    savedclass = $("span#saved-"+match[1])
    savedclass.addClass("saved");
    var bookid = +match[1];

    var delim = "|"; // delimiter for books in cookie
    // get the previous cookie (if any), split it into an array
    var books = ($.cookie("books_saved") || "").split(delim);
    books.push(bookid);
    $.cookie("books_saved", books.join(delim), { expires: 7, path: '/', domain: 'example.com'});
    return false;
     });


      $("a[id^='delbook-']").click(function(){
    xmatch = this.id.xmatch(/delbook-(\d+)/);
var delim = "|";
    var delid = xmatch[1];
    var books = ($.cookie("books_saved") || "").split(delim);
    var i = null;  
     for (i = 0; books.length > i; i += 1) {  
      if (books[i].delid === delid) {  
                books_saved.slice(delid)  
            }  
     }  

    });





    });

2 个答案:

答案 0 :(得分:0)

甚至没有查看代码 - 在浏览器关闭之前,无法保证实际删除cookie(由javascript触发)。 only 方法可以保证在特定时间点跨浏览器删除cookie是让服务器执行此操作。

答案 1 :(得分:0)

通过在过去设置“过期”时删除Cookie。

但是,我在此代码中看不到任何试图删除cookie的内容。您似乎试图删除设置为cookie的字符串的一部分。 (据我从代码中可以看出,这要归功于疯狂的缩进并不容易阅读。)

  if (books[i].delid === delid) {  
            books_saved.slice(delid)  
        }  

没有'books_saved'这样的变量。你应该有一个JavaScript错误。确保您有错误报告/错误控制台已打开,因为没有错误,您将在黑暗中拍摄。

据推测,你的意思是“书籍”数组,但这只是字符串,而不是delid的对象。

.slice返回数组的一部分作为新数组。它不会改变阵列。如果你打算从你希望splice的数组中删除一个项目,但将delid传递给它是没有任何意义的。也许你的意思是:

for (var i= books.length; i-->0;)
    if (books[i]===delid)
        books_saved.splice(i, 1);

这将从数组中删除给定的项目,但仍然不会更改cookie,您必须再次调用$.cookie,就像在保存簿功能中一样。