TypeError: 'undefined' is not a function (evaluating '$(document)')
加载脚本时,我收到此错误:
TypeError: 'undefined' is not a function (evaluating '$(document)')
我不知道是什么导致了它或它甚至意味着什么。
在萤火虫中,我得到了这个:
$ is not a function
默认情况下,Wordpress在noConflict模式下使用jQuery。您需要使用
1 | jQuery(document); |
代替
1 | $(document); |
您可以轻松地将其包装在一个自执行函数中,以便
1 2 3 | (function ($) { $(document); }(jQuery)); |
使用jQuery的
1 2 3 4 5 6 | var example=jQuery.noConflict(); example(function(){ example('div#rift_connect').click(function(){ example('span#resultado').text("Hello, dude!"); }); }); |
也就是说,假设您在HTML上包含了jQuery
1 | <script language="javascript" type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"> |
用这个:
1 | var $ =jQuery.noConflict(); |
我只在Chrome上遇到此问题。
我尝试添加
1 | var $ =jQuery.noConflict(); |
就在打电话之前
1 | $(document).ready(function () { |
有效。
非常感谢
试试这个片段:
1 2 3 | jQuery(function($) { // Your code. }) |
它对我有用,也许它也会帮助你。
还要检查是否包含jQuery,然后是一些组件/其他库(如jQuery UI),然后再次意外地包含jQuery - 这将重新定义jQuery并将组件助手(如.datepicker)从实例中删除。
我会用这个
1 2 3 | (function ($) { $(document); }(jQuery)); |
1 2 3 | ;(function($){ // your code })(jQuery); |
将你的js代码放在上面的闭包中,它应该解决问题。
我在web开发载体中也经常遇到这样的问题。实际上它不是JS冲突,当我们将html网站加载到浏览器时我们没有遇到这样的错误,但是当我们通过localhost加载这些类型的网站时我们面临这样的问题。那是因为localhost。当我们通过localhost加载脚本时,它会扫描脚本并呈现输出。但是当我们没有使用localhost时。它只是扫描输出。例如,当我们编写php代码时,将localhost放在没有主机的情况下运行,我们会收到错误。但是如果代码是正确的并且通过主机运行,我们得到实际输出,当我们使用inspect元素时,我们得到HTMl格式的输出代码,但不是PHP格式,这是因为代码的渲染。
这是渲染错误。因此,要修复这些jquery代码错误,解决方案之一可能就是使用此方法。
1 2 3 | jQuery(document).ready(function($){ /******** Body of Jquery Code*****/ }); |
这段代码的作用是通过应用jquery将'$'注册为函数的变量。否则,默认情况下.js文件仅作为javascript读取。
你可以在函数中传递$()
1 2 3 4 5 | jQuery(document).ready(function($){ // jQuery code is in here }); |
或者您可以用
或者您可以使用
1 2 3 4 | var jq=jQuery.noConflict(); jq(document).ready(function(){ jq('selector').show(); }); |
您可以在下面的代码段中同时使用jQuery和$。它对我有用
1 2 3 4 | jQuery( document ).ready(function( $ ) { // jQuery(document) // $(document) }); |
在这之间包装所有脚本...
1 2 3 4 | $.noConflict(); jQuery( document ).ready(function( $ ) { // Code that uses jQuery's $ can follow here. }); |
许多JavaScript库使用$作为函数或变量名,就像jQuery一样。在jQuery的情况下,$只是jQuery的别名,因此所有功能都可以在不使用$的情况下使用。如果你需要在jQuery旁边使用另一个JavaScript库,那么通过调用$ .noConflict()将$的控制权返回给另一个库。在jQuery初始化期间保存$的旧引用; noConflict()只是简单地恢复它们。
两件事情:
当我在页面标题中包含jQuery时,我也遇到了这个问题,没有意识到主机已经自动将它包含在页面中。因此,实际加载您的页面并检查源代码以查看是否正在链接jQuery。