Создать cookie, если (и только если) он еще не существует - PullRequest
22 голосов
/ 13 мая 2010

Я хочу:

  1. Проверьте, существует ли файл cookie с именем «query»
  2. Если да, то ничего не делать
  3. Если нет, создайте «запрос» cookie со значением 1

Примечание. Я использую jQuery 1.4.2 и плагин jQuery cookie .

У кого-нибудь есть предложения относительно того, как я могу это сделать?

Ответы [ 3 ]

49 голосов
/ 13 мая 2010
if($.cookie('query') === null) { 
    $.cookie('query', '1', {expires:7, path:'/'});
}

В качестве альтернативы вы можете написать для этого функцию-обертку:

jQuery.lazyCookie = function() {
   if(jQuery.cookie(arguments[0]) !== null) return;
   jQuery.cookie.apply(this, arguments);
};

Тогда вам нужно всего лишь написать это в своем коде клиента:

$.lazyCookie('query', '1', {expires:7, path:'/'});
6 голосов
/ 26 февраля 2013

Аналогично ответу Джейкобса, но я предпочитаю проверять неопределенное.

if($.cookie('query') == undefined){
    $.cookie('query', 1, { expires: 1 });
}
6 голосов
/ 13 мая 2010

это ??

$.cookie('query', '1'); //sets to 1...
$.cookie('query', null); // delete it...
$.cookie('query'); //gets the value....

if ($.cookie('query') == null){ //Check to see if a cookie with name of "query" exists
  $.cookie('query', '1'); //If not create a cookie "query" with a value of 1.
} // If so nothing.

что еще ты хочешь ??

...