$ .cookie不是一个函数

当我尝试加载我使用jQuery的页面时,当下面的行被击中:

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

我得到错误$ .cookie不是一个函数。 有没有人看过这个?

这意味着$.cookie插件没有被包含在页面中,至less不会被调用。 确保它们都被包括在内,并且它被使用之前被包括在内。 在jQuery本身之后join它是安全的。

只是一个提示: 其他几个插件依赖于cookie插件(但不一定在调用之前检查它是否存在),你可以使用一个。

你有jQuery cookie插件吗?

基本上可能有这个问题的各种原因。

  1. 你可能没有添加jquery插件。
  2. 确保在cookie插件之前包含jQuery文件
  3. 如果你已经完成了以上两个,然后尝试下载新版本的jquery-cookie插件 ,也解决了我的问题。

不,但我可以告诉你如何使一个非常容易,如…

创build一个单独的js文件,将其命名为您想要的,为了方便起见,我将其称为jCook。

在你的头文件中,添加jQuery之后,添加你的新文件:

 <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript" src="jCook.js"></script> <!-- here it is! --> 

下面是放在文件中的EASY代码:

 (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); 

尝试抓住什么不仅有助于确保你得到一个“虚假”的回报,如果你做错了什么,但真的不应该成为一个问题。 使用代码很容易…

在您的页面上,您的加载代码或任何只是执行以下操作:

 $.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"); 

看看这是多么简单!

只是为了解决,下面是一个真实世界的例子用来保存select下拉菜单的状态

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

尝试为您的域启用Mod_Sec,或要求您的托pipe公司启用它。 希望这可以帮助。

在我们的Drupal 7安装中也出现了同样的问题。 这是由于,如果我理解正确,由cPanel中的ModSecurityconfiguration阻止文件。 请参阅http://forums.cpanel.net/f5/mod-security-blocking-jquery-cookie-javascript-drupal-installation-191002.html

我一直在使用这个代码 –

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

它工作正常。 但我需要使用另一个版本是1.7.2的特定页面的jQuery版本,但我实际上是使用1.10.2使用多个jQuery版本后,我得到了这个错误 –

TypeError:$ .cookie不是一个函数

然后我用jQuery.cookie而不是$.cookie ,它的工作原理。 希望,这也有帮助;)

对于我来说,下载最新版本的jquery.cookie js后,问题就解决了

 <script src="js/jquery.mobile-1.4.5.min.js"></script> <script src="js/jquery.cookie.js"></script> 

第一个插件必须是juqery.js,第二个插件是cookie.js