我在网页中使用jQuery。在Internet Explorer中使用$
时,它可以正常工作。在Chrome或Firefox中引用$
时,它会失败并显示错误:
Uncaught ReferenceError: $ is not defined.
截图:
使用我的源代码:
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="jquery-1.7.2.min.js"></script>
<script type="text/javascript">
function divClick(sender, event)
{
// var chk = $(sender).find("input").first()[0];
var chk = jQuery(sender).find("input").first()[0];
alert("Works in ie");
}
</script>
</head>
<body>
<div onclick="divClick(this, event)">
<input type="checkbox">
</div>
</body>
</html>
注意:浏览器被定向到本地文件系统上的文件:
更新:尝试将其更改为jQuery
。
更新:Chrome找到jquery文件(即没有404):
答案 0 :(得分:7)
这个问题只是为了记录Chrome和Firefox中的错误:
Html File encoding IE9 Chrome
========================= ======= ======
Windows-1252 Works Works
UTF-8 (without BOM) Works Works
UTF-8 (with BOM EFBB) Works Works
UTF-16 (with LE BOM FFFE) Works Fails
UTF-16 (with BE BOM FEFF) Works Fails
据推测,Chrome(和Firefox)假设单独的script
文件与html
文件具有相同的编码。
然后Chrome会尝试将jquery-1.7.2.js
读为UTF-16,并且发现该文件是纯粹的(Windows-1252)垃圾而感到震惊。
答案 1 :(得分:5)
检查jquery-1.7.2.min.js
的路径是否正确。如果使用firefox或chrome开发人员工具查看文件是否下载,您可以签入firebug。您很可能获得了jQuery文件的404,因为在页面上未定义$,这是jQuery对象的别名。
答案 2 :(得分:3)
您可以在Firefox和Chrome中使用Javascript获取此错误:
Uncaught ReferenceError: $ is not defined.
如果你包括这样的jquery:
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.1/jquery.min.js">
</script>
并且您的服务器配置为不允许下载javascript内容并在运行时运行,然后您收到上述错误。看看整个错误:
[blocked] The page at https://yoursite.com/blah# ran insecure content
from http://ajax.googleapis.com/ajax/libs/jquery/1.3.1/jquery.min.js.
/blah#:1
Uncaught ReferenceError: $ is not defined
这意味着您的网络服务器不允许即时加载javascript内容。这是一种安全风险,因为有人可能会在那里注入恶意内容供您下载并拥有您的服务器。
答案 3 :(得分:1)
上述所有内容均不适用于Chrome 49。 我不得不将类型指定为“application / javascript”,如下所示:
<script src="lib/jquery-1.11.3.min.js" type="application/javascript"></script>
使用“text / javascript”无效。
答案 4 :(得分:0)
尝试:
var chk = jQuery(sender).find("input").first()[0];
答案 5 :(得分:0)
你的功能需要在dom准备就绪:
$(function(){
function divClick(sender, event)
{
var chk = $(sender).find("input").first()[0];
alert("Works in ie");
}
});
这将允许函数仅在页面加载后触发。 您的脚本也应该在结束HTML标记之前加载。不是所有的顶部。这将允许页面加载HTML和CSS更快,因为它不必等待JS加载。
还要确保从HTML中获得正确的jQuery路径。
最后一件事,
相反,如果在内联HTML中使用您的点击侦听器,请尝试将其移至JS。它只是一种更清洁,更有条理的方式来处理它。
$('.clickMe').click(function(){
//do stuff here
})
答案 6 :(得分:0)
而不是html中的onclick,我在Jquery代码中通过id分配了所有内容。
我不确定您是否想知道是否选中了div或是否选中了复选框。我将输入检查放入代码中,并在单击div时注释掉代码。
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(function(){
// $('#divid').unbind("click").click(function(){
$('#someid').unbind("click").click(function(){
if($(this).is(':checked')){
alert("checked");
}else{
alert("not checked");
}
});
});
</script>
</head>
<body>
<div id="divid"><input type="checkbox" id="someid"></div>
</body>
</html>