7

我在网页中使用 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):

在此处输入图像描述

4

7 回答 7

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) 垃圾。

于 2012-05-18T20:08:33.813 回答
5

检查路径jquery-1.7.2.min.js是否正确。如果使用 firefox 或 chrome 开发人员工具,您可以检查 firebug 以查看文件是否正在下载。您很可能会为 jQuery 文件获得 404,因为 $ 在页面上未定义,它是 jQuery 对象的别名。

于 2012-05-18T19:50:25.607 回答
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 

这意味着您的 Web 服务器不允许动态加载 javascript 内容。这是一个安全风险,因为有人可能会在其中注入邪恶的东西供您下载并拥有您的服务器。

于 2013-11-28T03:40:35.807 回答
1

以上均不适用于 Chrome 49 上的我。我必须将类型指定为“应用程序/javascript”,如下所示:

<script src="lib/jquery-1.11.3.min.js" type="application/javascript"></script>

使用“文本/javascript”不起作用。

于 2016-05-10T15:05:48.897 回答
0

尝试 :

var chk = jQuery(sender).find("input").first()[0];
于 2012-05-18T19:51:32.727 回答
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
}) 
于 2012-05-18T20:05:59.143 回答
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>
于 2012-05-18T20:19:30.370 回答