$(document).ready(function()不起作用

时间:2011-06-14 08:52:57

标签: jquery html json

我正在使用Jquery从solr服务器获取json对象。当我用Tomcat运行我的html文件时它运行得很好但是当我将它嵌入我在weblogic上运行的项目时会出现这个错误:(通过firebug完成调试)

$ is not defined
$(document).ready(function(){  

为什么在将其嵌入项目时会出现此错误?

这是我的<head>标记的内容,这是我如何包含jquery.js:

<head>
  <title>Search Result  </title>
  <style>
    img{ height: 150px; float: left; border: 3;}
    div{font-size:10pt; margin-right:150px;
    margin-left:150px; }
  </style>

  <script type="text/javascript" src="jquery-1.6.1.js"></script>
  <script type="text/javascript">
    $(document).ready(function(){       //Error happens here, $ is not defined.

    });
  </script>
</head>

10 个答案:

答案 0 :(得分:27)

您是否在head部分加载了jQuery?你装的是正确的吗?

<head>
   <script src="scripts/jquery.js"></script>
   ...
</head>

此代码假定jquery.js位于scripts目录中。 (如果您愿意,可以更改文件名)

您还可以使用jQuery as hosted by Google

<head>
   <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>
   ...
</head>

根据您的评论:

显然,您的网络服务器未配置为在请求jQuery-1.6.1.js时返回/webProject/jquery-1.6.1.js。这可能有很多原因,例如错误的文件名,文件夹名,路由设置等。您需要创建另一个问题并更详细地描述您的404(例如本地文件名,操作系统,网络服务器)名称和设置)。

同样,您可以使用Google提供的jQuery(参见上文),但是您仍然可能想知道为什么某些本地文件无法按要求提供服务。

答案 1 :(得分:13)

我发现有时需要使用noConflict

jQuery.noConflict()(function ($) { // this was missing for me
    $(document).ready(function() { 

       other code here....

    });
});

来自文档:

  

许多JavaScript库使用$作为函数或变量名,就像jQuery一样。在jQuery的情况下,$只是jQuery的别名,因此所有功能都可以在不使用$的情况下使用。如果您需要在jQuery旁边使用另一个JavaScript库,请通过调用$$.noConflict()的控制权返还给另一个库。在jQuery初始化期间保存$的旧引用; noConflict()只是简单地恢复它们。

答案 2 :(得分:6)

如果jQuery未正确加载,您只会收到此错误,您可以使用firebug检查其尝试加载的url,以便查看相对路径是否错误。

另外,在单独的说明中,您可以使用$(function(){作为$(document).ready(function(){的简写

答案 3 :(得分:2)

如果你有一个引用jquery的js文件,那可能是因为js文件在正文中而不是在head部分(这是我的问题)。您应该将js文件移动到jquery.js引用之后的head部分。

<html>
<head>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.js"></script>
    <script src="myfile.js" type="text/javascript"></script>
</head>
<body>
</body>
</html>

答案 4 :(得分:0)

查看可能导致问题的js路径...因为如果未正确加载jQuery,则只会出现此错误。

答案 5 :(得分:0)

我有同样的问题......在http://www.xaluan.com ..但在登录后。我发现在jQuery运行之后,我使用一个不存在的元素id来创建一个函数..

例如:

$('#aaa').remove()  <span class="aaa">sss</spam> 

所以id="aaa"不存在..然后jQuery停止运行..因为这样的错误

答案 6 :(得分:0)

使用:

jQuery(document).ready(function($){
    // code where you can use $ thanks to the parameter
});

或其较短版本:

jQuery(function($){
    // code where you can use $ thanks to the parameter
});

答案 7 :(得分:0)

我刚遇到这个问题,这是因为我试图通过http包含jQuery,而我的页面被加载为https。

答案 8 :(得分:0)

我在Chrome中遇到了同样的问题:我的脚本就像:

<script src="./scripts/jquery-1.12.3.min.js"></script>
<script src="./scripts/ol-3.15.1/ol.js" />
<script>
...
$(document).ready(function() {
    ...
});
...
</script>

当我改为:

<script src="./scripts/jquery-1.12.3.min.js"></script>
<script src="./scripts/ol-3.15.1/ol.js"></script>

$(document).ready被调用。

答案 9 :(得分:-1)

在加载DOM元素后设置事件。

$(function () {
        $(document).on("click","selector",function (e) {
          alert("hi");

        });

    });