当我尝试加载使用jquery的页面时,遇到以下行:
if ($.cookie('compare') != null)
我收到错误$ .cookie不是函数。有没有人见过这个?
答案 0 :(得分:52)
这意味着页面中没有包含$.cookie
plugin,至少不会被调用。确保它们都被包含在内,并且在之前被包含在内。在jQuery本身之后包含它是安全的。
只是一个提示:几个其他插件依赖于cookie插件(但不一定在调用之前检查它是否存在),你可以使用它。
答案 1 :(得分:10)
答案 2 :(得分:4)
不,但我可以告诉你如何使一个非常容易... ...
创建一个单独的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");
看看有多简单!?
只是要解决,下面是用于保存选择下拉菜单状态的真实示例
$(function(){
$("select[name=somthing]").change(function(e) {
$.setCookie("selectThis", $(this).val());
});
// And to use ...
if ($.getCookie("selectThis")) $("select[name=somthing]").val( $.getCookie("selectThis") ).change();
});
答案 3 :(得分:3)
基本上这个问题可能有多种原因。
答案 4 :(得分:0)
尝试为您的域启用Mod_Sec,或要求您的托管公司启用它。希望这会有所帮助。
答案 5 :(得分:0)
我们的Drupal 7安装中出现了同样的问题。如果我理解正确,它是由cPanel中的ModSecurity配置阻止文件引起的。见http://forums.cpanel.net/f5/mod-security-blocking-jquery-cookie-javascript-drupal-installation-191002.html
答案 6 :(得分:0)
我一直在使用这段代码 -
if( $.cookie('siteLayout') != undefined ){
if( $.cookie('siteLayout') == 'compact' )
$(settings.bodyElem).addClass('container');
}
它工作正常。但我需要在特定页面中使用另一个jQuery版本,其中版本为1.7.2但我实际上使用1.10.2使用多个jQuery版本后我收到此错误 -
TypeError:$ .cookie不是函数
然后我使用了jQuery.cookie
而不是$.cookie
并且它有效。希望,这也会有所帮助;)
答案 7 :(得分:-1)
对我来说,下载最新版本的jquery.cookie js
后问题已解决答案 8 :(得分:-1)
$。cookie不是标准的jQuery函数 当包含cookie脚本时,请确保包含jQuery FIRST,然后包含cookie插件。 即
<script src="~/Scripts/jquery-2.0.3.js" type="text/javascript"></script>
应始终优先于
<script src="~/Scripts/jquery_cookie.js" type="text/javascript"></script>
答案 9 :(得分:-2)
<script src="js/jquery.mobile-1.4.5.min.js"></script>
<script src="js/jquery.cookie.js"></script>
第一个插件必须是juqery.js,第二个插件是cookie.js