2009-10-25 40 views
0

我在删除特定的cookie时遇到了一些问题。我已经成功创建了cookie,但问题是在特定的del id被调用时删除cookie。这是完整的代码,有人可以指出我缺少什么,如果可能的话,引导我帮我修复它?使用插件删除Jquery 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) 
      } 
    } 

    }); 





    }); 
+0

我正在使用这个插件http://plugins.jquery.com/project/cookie,以防万一 – kazey 2009-10-25 05:46:31

回答

0

看也不看代码 - 也不能保证一个cookie实际上将被删除(当由JavaScript触发),直到浏览器关闭了下来。 只有确保cookie在特定时间点被跨浏览器删除的方式是让服务器执行此操作。

+0

要清楚 - cookie被安排删除,但是(例如)firefox 3.5不会停止发送cookie直到重新启动。去搞清楚。 – Maas 2009-10-25 05:48:13

+0

这是由一个jQuery插件处理,并且是可能的。我只是没有弄清楚我的代码有什么问题。 相关示例为 var count = 5; (books.length> count){ \t \t books = books.slice(books.length-count); \t} 它删除最后一个ID,这限制了cookie中数据的大小为5.我只是没有想出如何解决它。还有其他人吗? – kazey 2009-10-25 06:41:38

+0

如果浏览器不支持cookies,它不会首先创建。 – kazey 2009-10-25 06:43:11

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就像在savebook功能。

+0

我解决了这个使用PHP,谢谢:) – kazey 2009-10-25 18:30:19