$ .cookie não é uma function

Quando tento carregar minha página que usa jquery, quando a seguinte linha é atingida:

if ($.cookie('compare') != null) 

Eu recebo o erro $ .cookie não é uma function. alguém viu isso antes?

Isso significa que o plugin $.cookie não está sendo incluído na página, pelo menos não sendo chamado. Certifique-se de que está sendo incluído e está sendo incluído antes de ser usado. Incluí-lo logo após o jQuery para ser seguro.

Apenas uma dica: Vários outros plugins dependem do plugin do cookie (mas não necessariamente verificar se ele existe antes de chamá-lo), você poderia estar usando um.

Você tem o plugin de cookie jQuery ?

Basicamente, pode haver vários motivos para esse problema.

  1. Você pode não ter adicionado o plugin jquery.
  2. Certifique-se de include o arquivo jQuery antes do plugin do cookie
  3. Se você já fez acima de dois, tente baixar a nova versão do plugin jquery-cookie que também resolveu meu problema.

Não, mas eu posso te mostrar como fazer um muito fácil como …

Crie um arquivo js separado, nomeie o que quiser, para facilitar, eu chamo de jCook.

No seu header, depois de adicionar o jQuery, adicione seu novo arquivo:

    

E abaixo está o código EASY para colocar no arquivo:

 (function($) { if (!$.setCookie) { $.extend({ setCookie: function(c_name, value, exdays) { try { if (!c_name) return false; var exdate = new Date(); exdate.setDate(exdate.getDate() + exdays); var c_value = escape(value) + ((exdays==null) ? "" : "; expires="+exdate.toUTCString()); document.cookie = c_name + "=" + c_value; } catch(err) { return false; }; return true; } }); }; if (!$.getCookie) { $.extend({ getCookie: function(c_name) { try { var i, x, y, ARRcookies = document.cookie.split(";"); for (i = 0; i < ARRcookies.length; i++) { x = ARRcookies[i].substr(0,ARRcookies[i].indexOf("=")); y = ARRcookies[i].substr(ARRcookies[i].indexOf("=")+1); x = x.replace(/^\s+|\s+$/g,""); if (x == c_name) return unescape(y); }; } catch(err) { return false; }; return false; } }); }; })(jQuery); 

O try catch e o que não apenas ajuda a garantir que você obtenha um retorno "falso" se fizer algo errado, mas realmente não deveria ser um problema. Para usar o código é fácil ...

Na sua página, onde seu código de carregamento ou o que quer que seja, faça o seguinte:

 $.setCookie("nameOfCookie", "someValue", 30); // where 30 is the number // of days to expire, or you could leave blank as: $.setCookie("nameOfCookie", "someValue") // And to retrieve your cookie $.getCookie("nameOfCookie"); 

Veja como isso foi simples!

E só para resolver, abaixo está um exemplo de uso do mundo real para salvar um estado de um menu suspenso

 $(function(){ $("select[name=somthing]").change(function(e) { $.setCookie("selectThis", $(this).val()); }); // And to use ... if ($.getCookie("selectThis")) $("select[name=somthing]").val( $.getCookie("selectThis") ).change(); }); 

Tente ativar o Mod_Sec no seu domínio ou peça à sua empresa de hospedagem para ativá-lo. Espero que isto ajude.

O mesmo problema ocorreu em nossa instalação do Drupal 7. Foi causado, se bem entendi, pela configuração do ModSecurity no cPanel bloqueando o arquivo. Veja http://forums.cpanel.net/f5/mod-security-blocking-jquery-cookie-javascript-drupal-installation-191002.html

Eu tenho usado esse código –

 if( $.cookie('siteLayout') != undefined ){ if( $.cookie('siteLayout') == 'compact' ) $(settings.bodyElem).addClass('container'); } 

E isso funciona bem. Mas eu estava em necessidade de usar outra versão jQuery em uma página específica, onde a versão foi 1.7.2, mas eu estava realmente usando 1.10.2 Depois de usar a versão múltipla jQuery eu tenho esse erro –

TypeError: $ .cookie não é uma function

então eu usei jQuery.cookie vez de $.cookie e funciona. Espero que isso também ajude;)

Para mim, o problema foi corrigido depois de baixar a versão mais recente do jquery.cookie js

   

o primeiro plugin deve ser juqery.js e o segundo plugin é cookie.js