13

What I'm trying to do is when user visits page test.html , to delete cookies from pages he previously visited, like test1.html ,test2.html etc. and set new cookie.

Is there an easier way to delete all previously set cookies at once (I have 100s of pages to declare one by one every time) with jquery?

I don't know any other way except to delete one by one and then set new:

$.cookie('test1', 'test1', { expires: -1, path: '/' });//deleting cookies from test1.html
$.cookie('test2', 'test2', { expires: -1, path: '/' });//deleting cookies from test2.html

$.cookie('test', 'test', { expires: 30, path: '/' });//setting new cookies 

Thanks

yas
  • 143
  • 1
  • 1
  • 8

3 Answers3

22

Following the jquery-cookie spec:

1) You call $.cookie() which should return all of the cookies on the current page.
2) Just iterate through and remove as below:

var cookies = $.cookie();
for(var cookie in cookies) {
   $.removeCookie(cookie);
}

Note: when deleting a cookie, you must pass the exact same path, domain and secure options that were used to set the cookie, unless you're relying on the default options that is.

megawac
  • 10,953
  • 5
  • 40
  • 61
  • but I have a question regarding your note. I just copy-pasted and it worked for me,but you said that I have to pass the exact same path, domain and secure options that were used to set the cookie. This confused me..because I asked for a solution to delete ALL cookies at once. – yas Oct 19 '13 at 20:43
  • When modifying/removing cookies for browser security reasons you have to pass the correct credentials. The main reason for this is so you dont disturb other parties cookies on the page. For instance, if you were working on a widget on yahoo.com and decided to remove all your cookies, you wouldn't be affecting other widgets on the page unless they were using the same credentials. Usually developers set all their page cookies using the same settings, so this method should work for most use cases. – megawac Oct 19 '13 at 20:49
  • thanks again..its clear now.. luckily in my case this worked without affecting other parties cookies (still in place) – yas Oct 19 '13 at 21:02
7
var cookies = document.cookie.split(";");
for(var i=0; i < cookies.length; i++) {
    var equals = cookies[i].indexOf("=");
    var name = equals > -1 ? cookies[i].substr(0, equals) : cookies[i];
    document.cookie = name + "=;expires=Thu, 01 Jan 1970 00:00:00 GMT";
}

Taken from the questions How to delete all cookies with jquery

Community
  • 1
  • 1
Neeraj
  • 8,408
  • 8
  • 41
  • 69
0

Please note that the jquery-cookie spec us no longer maintained, superseded by JS Cookie

Milo
  • 3,365
  • 9
  • 30
  • 44
Downes
  • 1