【问题标题】:$(document).ready(function() is not working$(document).ready(function() 不工作
【发布时间】:2023-03-31 02:21:01
【问题描述】:

我正在使用 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>

【问题讨论】:

  • 你加载了 jQuery 吗?您是否在自定义 javascript 之前加载它?
  • 使用 jQuery(document).ready(function() 而不是 $(document).ready(function() 。我认为它有效..
  • 你是如何包含 jQuery 库的?检查您的路径是否正确。如果您使用的是 CDN,请确保可以从您的网络“看到”它。
  • 是的,我已经包含了 jquery.js 和自定义 java 脚本之前。
  • 首先查找 jquery 文件,如果已加载,那么您的代码必须在 jquery 加载行之后编写

标签: jquery html json


【解决方案1】:

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

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

此代码假定jquery.js 位于scripts 目录中。 (您可以根据需要更改文件名)

你也可以使用jQueryas hosted by Google:

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

根据您的评论:

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

同样,您可以使用 Google 提供的 jQuery(见上文),但是您可能仍想了解为什么某些本地文件没有按请求提供服务。

【讨论】:

  • @Romi,您在 URL 的开头缺少 http://https://。如果没有它,浏览器会在 CURRENT 文件夹中查找资产。
  • 不需要在head中加载jQuery,只需要在它之前加载jQuery。
【解决方案2】:

我发现我们有时需要使用noConflict

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

       other code here....

    });
});

来自文档:

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

【讨论】:

  • 帮我修好了
【解决方案3】:

如果 jQuery 没有正确加载,你只会得到这个错误,你可以用 firebug 检查它试图加载的 url,这样你就可以看到你的相对路径是否错误。

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

【讨论】:

    【解决方案4】:

    如果你有一个引用 jquery 的 js 文件,可能是因为 js 文件在正文中而不是在头部分(这是我的问题)。您应该在 jquery.js 引用之后将您的 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>
    

    【讨论】:

    • 有没有其他方法可以让它工作,而不是把函数放在 head 里面?
    【解决方案5】:

    查看您的 js 路径,这可能是导致问题的原因...因为如果 jQuery 未正确加载,您只会收到此错误。

    【讨论】:

      【解决方案6】:

      我刚遇到这个问题,这是因为我在页面加载为 https 时尝试通过 http 包含 jQuery。

      【讨论】:

        【解决方案7】:

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

        例如:

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

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

        【讨论】:

          【解决方案8】:

          我在 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】:

            用途:

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

            或其较短的版本:

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

            【讨论】:

            • 你的代码和有问题的代码有什么区别?
            • 不同之处在于我将 $ 定义为参数。这是一个旧答案,但我记得遇到了 Jquery 的问题,$ 没有定义。其实现在我想使用 var $ = jQuery 也应该可以工作......
            【解决方案10】:

            您也可以在此函数中编写您的 jquery 代码。 document.addEventListener("DOMContentLoaded",function(),{ },假);

            【讨论】:

              【解决方案11】:

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

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

              【讨论】:

              • 你的答案不相关。
              • 我在 jQuery 1.10.2 中修复了此类问题。
              猜你喜欢
              • 1970-01-01
              • 2011-08-30
              • 1970-01-01
              • 2010-12-11
              • 1970-01-01
              • 1970-01-01
              • 2011-04-01
              • 1970-01-01
              • 2011-05-22
              相关资源
              最近更新 更多