【问题标题】:Jquery $(document).ready return ERROR: "This is not a function" [closed]Jquery $(document).ready 返回错误:“这不是函数”[关闭]
【发布时间】:2015-12-29 16:39:27
【问题描述】:

我有一个简单的 jquery 脚本,它返回

"Uncaught TypeError: undefined is not a function"

下面是脚本:

<script type="text/javascript">
$(document).ready(function(){

  console.log("jimmy"); 

});
</script>

【问题讨论】:

  • 你加载了 jQuery 吗?
  • 所以这是在右下角?可以分享完整代码吗?
  • 你确定你的 jQuery 被正确指向了吗?
  • 尝试替换为jQuery(document)...
  • 如果正在加载 jQuery,请在浏览器控制台中检查。

标签: javascript jquery


【解决方案1】:

如果使用jQuery 而不是$ 有效,这意味着您的$ 正在被Joomla 或Drupal 使用。不过,您仍然可以在代码中使用 $

jQuery(document).ready(function($){  // notice the $

   $('selector'); // can use $

});

虽然 jQuery 文档可能会讨论在存在其他库时执行此方法,但我发现默认情况下执行此方法更容易。它清楚地表明您正在使用 jQuery 并表明$ 作为参数传递。新程序员可能无法理解的魔法也更少,因此他们可以更轻松地将问题追溯到文档,而不必首先找出$ 可能指向的内容。

【讨论】:

  • 您需要在.ready() 上方调用$.noConflict();,还是按原样工作?
  • noConflict 一般用于释放控制。因此,如果您加载了 Prototype,然后加载了 jQuery,调用 noConflict 会将 $ 返回到 Prototype 库。这样你就可以同时使用 jQuery 和 Prototype。
  • 完美,感谢您的澄清!
  • 要记住的一点是,无论出于何种原因,您可能在同一页面上有两个不同版本的 jQuery(例如,如果某些内容已被弃用)。这种情况通常很少见且不明智,但作为补偿,您可以传递其他参数以便在同一页面中使用/管理多个版本的 jQuery。
【解决方案2】:

也许,由于某种原因,您没有分配 $ 或与另一个库存在一些不兼容。

如果是这样,你可以使用:

// $j is now an alias to the jQuery function; creating the new alias is optional.
var $j = jQuery.noConflict();

【讨论】:

    【解决方案3】:

    使用jQuery insted of $ 使脚本工作

    【讨论】:

      【解决方案4】:

      首先,将 jQuery 添加到正文中:

      <script type="text/javascript" src="jquery.min.js"></script>
      

      只有在此之后,添加您的代码。

      <script type="text/javascript">
      $(function() {
      
        console.log("jimmy"); 
      
      });
      </script>
      

      完整代码:

      <!doctype html>
      <html>
          <head></head>
          <body>
              Content of your website
              <script type="text/javascript" src="jquery.min.js"></script>
              <script type="text/javascript">
              $(function() {
      
                console.log("jimmy"); 
      
              });
              </script>
          </body>
      </html>
      

      现在可以了吗?

      【讨论】:

      • jquery正在加载中,查看问题评论
      • 使用jQuery insted of $ works
      • 如果是这样,您在 jQuery 和另一个库之间存在一些冲突。使用 noConflict()。见api.jquery.com/jquery.noconflict
      猜你喜欢
      • 1970-01-01
      • 2018-11-07
      • 2014-09-14
      • 1970-01-01
      • 1970-01-01
      • 2012-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多