Jquery插件之cookie

Create session cookie:

1
$.cookie('the_cookie', 'the_value');

Create expiring cookie, 7 days:

1
$.cookie('the_cookie', 'the_value', { expires: 7 });

Create expiring cookie, valid across entire site:

1
$.cookie('the_cookie', 'the_value', { expires: 7, path: '/' });

Read cookie:

1
2
$.cookie('the_cookie'); // => "the_value"
$.cookie('not_existing'); // => undefined

Read all available cookies:

1
$.cookie(); // => { "the_cookie": "the_value", "...remaining": "cookies" }

Delete cookie:

1
2
3
4
// Returns true when cookie was found, false when no cookie was found...
$.removeCookie('the_cookie');
// Same path as when the cookie was written...
$.removeCookie('the_cookie', { path: '/' });
(jquery.cookie.js) download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
/*!
 * jQuery Cookie Plugin v1.3.1
 * https://github.com/carhartl/jquery-cookie
 *
 * Copyright 2013 Klaus Hartl
 * Released under the MIT license
 */
(function (factory) {
  if (typeof define === 'function' && define.amd) {
      // AMD. Register as anonymous module.
      define(['jquery'], factory);
  } else {
      // Browser globals.
      factory(jQuery);
  }
}(function ($) {

  var pluses = /\+/g;

  function raw(s) {
      return s;
  }

  function decoded(s) {
      return decodeURIComponent(s.replace(pluses, ' '));
  }

  function converted(s) {
      if (s.indexOf('"') === 0) {
          // This is a quoted cookie as according to RFC2068, unescape
          s = s.slice(1, -1).replace(/\\"/g, '"').replace(/\\\\/g, '\\');
      }
      try {
          return config.json ? JSON.parse(s) : s;
      } catch(er) {}
  }

  var config = $.cookie = function (key, value, options) {

      // write
      if (value !== undefined) {
          options = $.extend({}, config.defaults, options);

          if (typeof options.expires === 'number') {
              var days = options.expires, t = options.expires = new Date();
              t.setDate(t.getDate() + days);
          }

          value = config.json ? JSON.stringify(value) : String(value);

          return (document.cookie = [
              config.raw ? key : encodeURIComponent(key),
              '=',
              config.raw ? value : encodeURIComponent(value),
              options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE
              options.path    ? '; path=' + options.path : '',
              options.domain  ? '; domain=' + options.domain : '',
              options.secure  ? '; secure' : ''
          ].join(''));
      }

      // read
      var decode = config.raw ? raw : decoded;
      var cookies = document.cookie.split('; ');
      var result = key ? undefined : {};
      for (var i = 0, l = cookies.length; i < l; i++) {
          var parts = cookies[i].split('=');
          var name = decode(parts.shift());
          var cookie = decode(parts.join('='));

          if (key && key === name) {
              result = converted(cookie);
              break;
          }

          if (!key) {
              result[name] = converted(cookie);
          }
      }

      return result;
  };

  config.defaults = {};

  $.removeCookie = function (key, options) {
      if ($.cookie(key) !== undefined) {
          // Must not alter options, thus extending a fresh object...
          $.cookie(key, '', $.extend({}, options, { expires: -1 }));
          return true;
      }
      return false;
  };

}));