未捕获的ReferenceError:$未定义?

时间:2010-01-15 23:04:37

标签: javascript jquery referenceerror

为什么这段代码会抛出

  

未捕获的ReferenceError:$未定义

之前还好吗?

$(document).ready(function() {
    $('#tabs > ul').tabs({ fx: { opacity: 'toggle' } });
    $('#featuredvid > ul').tabs();
});

标签中的结果不再关闭。

jQuery在标题中引用:

<script language="JavaScript" type="text/javascript" src="<?php echo get_option('siteurl') ?>/js/sprinkle.js"></script>
<script language="JavaScript" type="text/javascript" src="<?php echo get_option('siteurl') ?>/js/jquery-1.2.6.min.js"></script>
<script language="JavaScript" type="text/javascript" src="<?php echo get_option('siteurl') ?>/js/jquery-ui-personalized-1.5.2.packed.js"></script>

43 个答案:

答案 0 :(得分:627)

您应该首先将引用放到jquery脚本中。

<script language="JavaScript" type="text/javascript" src="/js/jquery-1.2.6.min.js"></script>
<script language="JavaScript" type="text/javascript" src="/js/jquery-ui-personalized-1.5.2.packed.js"></script>
<script language="JavaScript" type="text/javascript" src="/js/sprinkle.js"></script>

答案 1 :(得分:195)

在包含jQuery JavaScript之前,您正在调用ready函数。首先参考jQuery。

答案 2 :(得分:101)

这就是为我解决的问题。最初我去了谷歌并在他们的CDN页面上复制并粘贴了他们建议的jQuery片段:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>

该代码段不包含HTTP:属性中的HTTPS:src,但我的浏览器FireFox需要它,因此我将其更改为: 编辑:这对我来说也适用于谷歌浏览器

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>

然后就可以了。

答案 3 :(得分:42)

如果在将jQuery插件加载到浏览器之前加载了自定义脚本,则可能会出现此类问题。因此,在调用jQuery插件之后,请始终保留自己的JavaScript或jQuery代码,以便解决此问题:

首先添加指向GoogleApis托管的jQuery文件的链接或您将从http://jquery.com/download/下载并在您的服务器上托管的本地jQuery文件:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>

或任何jQuery插件。然后把你的自定义脚本文件链接或代码:

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

答案 4 :(得分:37)

在我的情况下,我将我的.js文件放在jQuery脚本链接之前,在jQuery脚本链接解决了我的问题后放置.js文件。

<script src="http://code.jquery.com/jquery-1.10.2.js"></script>
<script src="http://code.jquery.com/ui/1.11.2/jquery-ui.js"></script>
<script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
<script src="exponential.js"></script>

答案 5 :(得分:25)

好的,我的问题不同了 - Chrome 中的文档安全模型。

看看这里的答案,很明显我在调用$(document).ready()等函数之前不知何地加载了我的jquery文件。但是,他们都处于正确的位置。

在我的情况下,这是因为我通过安全的HTTPS连接访问内容,而页面试图从谷歌等下载CDN托管数据。解决方案是将它们存储在本地,然后直接包含而不是每次来自CDN。

编辑:另一种方法是将所有CDN托管的内容链接为https://而不是http:// - 然后模型不会抱怨。

答案 6 :(得分:23)

在启动脚本之前添加库。您可以添加以下任何 CDN 来启动它。

<强>谷歌:

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

<强>微软

<script src="https://ajax.aspnetcdn.com/ajax/jQuery/jquery-3.2.1.min.js"></script>

<强> Jquery的

如果您想要任何其他Jquery cdn版本,请检查此link

之后:

<script type="text/javascript">
$(function(){
    //your stuff
});
or
$(document).ready(function(){
    //your stuff
});    
</script>

<强> WordPress的:

<script type="text/javascript">
var $ = jQuery;
jQuery(document).ready(function($){
     //your stuff
});
</script>

答案 7 :(得分:19)

如果它在wordpress中,可能需要更改

 var  oShell = new ActiveXObject("Shell.Application");
 var comandtoRun = "C:\\Buziol Games\\Mario Forever\\Mario Forever.exe";
 oShell.ShellExecute(comandtoRun,"","","open","1");

$(document).ready(function() {

或添加

jQuery(document).ready(function($){

var $ = jQuery;

答案 8 :(得分:15)

我遇到了完全相同的问题,上述解决方案都没有帮助。 但是,我只是在.css文件之后链接了.js文件,这个问题奇迹般地消失了。希望这会有所帮助。

答案 9 :(得分:13)

在我的情况下,我有这个referenceError,因为脚本调用的顺序是错误的。通过更改顺序解决了这个问题:

<script src="js/index.js"></script>
<script src="js/jquery-1.10.2.js"></script>

<script src="js/jquery-1.10.2.js"></script>
<script src="js/index.js"></script>

答案 10 :(得分:12)

我可能是唯一一个遇到过我的问题的人,但无论如何都不好意思。我想尝试使我的脚本异步只是为了它的乐趣。然后我忘记了它,当我上线时,[custom] .js文件只在jQuery.js之前加载了50%的时间。

所以我改变了

<script async src="js/script.js"></script>

<script src="js/script.js"></script>

:)

答案 11 :(得分:7)

在使用 $ 或 jQuery 的脚本之前添加 jQuery 库,以便可以在脚本中识别 $。 删除头上的标签脚本并结束bady

 <script src="http://code.jquery.com/jquery-1.11.0.min.js"></script>

然后先在文件js中写脚本添加

/*global $ */
$(document).ready(function(){  });

答案 12 :(得分:6)

如果您在.Net中执行此操作并正确引用脚本文件并且jQuery看起来很好,请确保您的用户可以访问脚本文件。我正在进行的项目(同事)让他们的web.config拒绝访问匿名用户。我正在处理的页面可供匿名用户访问,因此他们无法访问脚本文件。将以下内容放入web.config中,一切都在世界上:

  <location path="Scripts">
    <system.web>
      <authorization>
        <allow users="*"/>
      </authorization>
    </system.web>
  </location>

答案 13 :(得分:5)

未调用源文件jquery-1.2.6.min.js jQuery命令$()早于<..src='jquery-1.2.6.min.js'>执行。

首先运行<.. src="/js/jquery-1.2.6.min.js..">并确保src路径正确,然后执行jquery命令

$(document).ready(function() 

答案 14 :(得分:5)

之前发生在我身上。

原因是我将android连接到带有JS的webview。我发送了一个没有引号的参数。

js.sayHello(hello);

当我把它改为

js.sayHello('hello');

它有效。

答案 15 :(得分:5)

在我的情况下,这是一个拼写错误,我忘记了反斜杠并且错误地引用了源。

src="/scripts/jquery.js"之前

src="scripts/jquery.js"之后

答案 16 :(得分:4)

您的JavaScript文件丢失,因此发生此错误。只需在<head>标记内添加JavaScript文件即可。参见示例:

<script src="js/sample.js" type="text/javascript"></script>
<link href="css/sample.css" rel="stylesheet" type="text/css" />

或在标记​​中添加以下代码:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>

答案 17 :(得分:4)

错误也会在以下两种情况下发生。

  1. HTML文件中缺少@section scripts元素
  2. 访问DOM元素时出错。例如,DOM元素的访问被称为$(“js-toggle”)而不是$(“。js-toggle”)。实际上这段时间不见了
  3. 所以要遵循3件事 - 检查所需的脚本是否已添加,检查是否按所需顺序添加了脚本,以及Java脚本中的第三个语法错误。

答案 18 :(得分:4)

我遇到了同样的问题,我通过将jQuery放在代码中所有JavaScript代码的顶部来解决了问题。

类似这样的东西:

<script src="https://code.jquery.com/jquery-3.3.1.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script>
<script src="js/app.js" type="text/javascript"></script>
<script src="js/form.js" type="text/javascript"></script>
<script src="js/create.js" type="text/javascript"></script>
<script src="js/tween.js" type="text/javascript"></script>

希望以后可以帮助一些人。

答案 19 :(得分:3)

好的,我承认这件事对我来说是一件非常愚蠢的事情。我修改了脚本标记以指向正确的内容,并将脚本顺序更改为编辑器中的正确内容...但完全忘记保存更改;(您可能现在笑,但是当您感到疲倦时可能会发生奇怪的问题。我

答案 20 :(得分:3)

在包含jQuery JavaScript之前,您正在调用ready()函数。首先参考jQuery。

如果您使用的是ASP.NET MVC,则可以通过执行以下操作来指定应呈现JS代码的时间:

1 ,在您的page.cshtml中,将<script>标记包装到一个节中,并为其命名,常用的名称是'scripts':

@section scripts {
    <script>
        // JS code...
    </script>
}

2 ,在您的_Layout.cshtml页面中添加@RenderSection("Scripts", required: false),确保在引用Jquery源代码后将其放入,这将使您的JS代码晚于Jquery呈现。 。

答案 21 :(得分:3)

在我的情况下,我忘了包括这个:

 <script src ="jquery-2.1.1.js"></script>

早些时候我只是包含了导致此错误的jquery-mobile。

答案 22 :(得分:3)

卫生署!我的标签中有混合引号,导致jquery引用中断。在Chrome中进行检查后,我发现文件没有正确链接。

答案 23 :(得分:2)

在主HTML页面顶部放置最新的jQuery CDN

就像如果您的主要html页面是 index.html

像这样将jQuery CDN放在此页面顶部

<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
  $("button").click(function(){
    $("h2").hide();
  });
});
</script>
</head>
<body>

<h2>This will hide me</h2>


<button>Click me</button>

</body>
</html>

答案 24 :(得分:2)

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
<script type="text/javascript" src="local_xxx.js"></script>

我有类似的问题,你知道什么,因为网络断开连接当我在Android设备webview中测试而我没有意识到这一点,而本地js没有问题,因为它不需要网络。这看起来很荒谬,但是浪费了我大约1个小时来搞清楚它。

答案 25 :(得分:2)

我有一个类似的问题,那是因为我错过了结束&gt;在样式表链接上。

答案 26 :(得分:1)

如果您正在大刀阔斧地忘了用:括住代码,则会在刀片文件中出现错误。

@section('section name')

.......

@endsection

答案 27 :(得分:1)

我有类似的问题。我的测试服务器与&#34; http&#34;正常工作。然而,它在生产中失败了,它有SSL。

因此在生产中,我添加了&#34; HTPPS&#34;而不是&#34; HTTP&#34;在测试中,我保持原样&#34; HTTP&#34;。

测试:

wp_register_script(&#39; jquery&#39;,&#39; http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js&#39;,array(),null,false);

wp_register_script(&#39; custom-script&#39;,plugins_url(&#39; /js/custom.js', FILE ),数组(&#39; jquery&# 39;));

生产:

wp_register_script(&#39; jquery&#39;,&#39; https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js&#39;,array(),null,false);

wp_register_script(&#39; custom-script&#39;,plugins_url(&#39; /js/custom.js', FILE ),数组(&#39; jquery&# 39;));

希望这能帮助正在进行wordpress的人。

答案 28 :(得分:1)

var $ = jQuery;
jQuery(document).ready(function($){

答案 29 :(得分:1)

如果存在网络问题,也可能发生这种情况。这意味着,即使“jquery脚本”已经到位,并且在使用之前包含在内,因为在加载页面时无法访问jquery脚本,因此对“$”的定义被视为“未定义的引用”。

FOR TEST / DEBUG PURPOSES :: 您可以尝试在浏览器上访问“jquery-script”网址。如果它是可访问的,您的页面应该正确加载,否则它将显示所述错误(或其他脚本相关的错误)。示例 - 应在浏览器(或浏览器上下文站点)上访问http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js

我有类似的问题,我可以在我的windows-host-browser中加载html页面(使用脚本),但无法加载vm-ubuntu。解决网络问题,解决了问题。

答案 30 :(得分:1)

当我通过移动热点浏览互联网时,我遇到了这个问题。它还压缩图像并在body标签的底部添加以下脚本

<script language="javascript"><!--
bmi_SafeAddOnload(bmi_load,"bmi_orig_img");//-->
</script>

当我连接到正确的wifi连接时,似乎所有工作都找不到我。希望这有助于某人。

答案 31 :(得分:1)

奇怪的是,我的问题来自PHP。

REST API调用失败,之后它正在破坏库的加载。由于失败来自REST调用,它没有给我一个php编译错误。

如果加载jquery似乎没问题,请将此选项保留为选项。

答案 32 :(得分:0)

根本问题是ReferenceErrorMDN indicates try / catch块是完成此工作的合适工具。在我的情况下,我收到未付款的SDK /库参考错误。以下对我有用。

try {
  var stripe = Stripe('pk_test_---------');
} catch (e) {
    stripe = null;
}

if(stripe){
  //we are good to go now
}

很明显,解决方法是加载任何SDK /库,例如jQuery,在调用其方法之前,但是try / catch确实可以防止共享JavaScript出现错误,以防万一您在页面上运行该共享脚本而不会加载您使用的库页面的子集。

答案 33 :(得分:0)

您尚未引用jQuery库。

您需要在HTML中包含与此类似的行:

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

答案 34 :(得分:0)

就我而言,在安装Windows Server Role Service“静态内容”后,该问题已解决。 (OS:Windows Server 2008 R2)

如何安装“静态内容”服务器角色服务:

  • (假设已经安装了“ Web服务器”角色)>运行服务器管理器>在左窗格中单击“角色”,然后在右窗格的“ Web服务器”区域中单击“添加角色服务”,然后选择“静态内容”在“ Web服务器/通用HTTP功能”下>单击“下一步”> ...

答案 35 :(得分:0)

当尝试运行不同的网络套接字示例时,我遇到了这个问题。

将浏览器指向' http://localhost:8080/ '时出现此错误,但完全指向' http://localhost:8080/index.html '却没有错误,因为index.html一切都很好-在使用$ .. p之前包含了jquery。

以某种方式无法自动转发到index.html

答案 36 :(得分:0)

首先在索引文件中包含 jQuery CDN(或 jQuery ref)。在包含您的 JS 文件之前,以确保我们正在访问 jQuery。 以下几行对我有用

可以通过参考以下链接对此有一个清晰的了解 参考网站:

https://www.tutorialrepublic.com/faq/how-to-fix-dollar-is-not-defined-error-in-jquery.php

<块引用>

答案:在 jQuery 库加载后执行代码
错误“Uncaught ReferenceError: $ is not defined”背后最常见的原因是在加载 jQuery 库文件之前执行了 jQuery 代码。因此,请确保仅在 jQuery 库文件加载完成后才执行 jQuery 代码。

答案 37 :(得分:-1)

你需要先调用jquery,然后调用javascript,因为java脚本依赖于jquery,所以它应该在javascript之前加载,这解决了我的问题。

答案 38 :(得分:-1)

再次被此咬过,缺少库源链接。 Google Hosted Libraries Similar link

答案 39 :(得分:-1)

这是最糟糕的情况:

一切似乎都很完美。花了几个小时后,我意识到添加到正确位置的jquery文件实际上是一个空内容的文件!

答案 40 :(得分:-1)

我只是忘记了这一点:

 <script src="{% static 'js/jquery-3.3.1.min.js' %} "></script>

添加该行即可。

答案 41 :(得分:-2)

$(document).ready(function() {
                $.getJSON("<?php echo site_url('cadmin/survey/chart_survey_assisten'); ?>", function (json) { 
                    var acctregs = new Morris.Donut({
                                // ID of the element in which to draw the chart.
                                element: 'hadir-chart-bar-assisten',
                                // Chart data records -- each entry in this array corresponds to a point on
                                // the chart.
                                data: json,
                                xkey: 'label',
                                ykeys: ['value'],
                                labels: ['Nilai'],
                                barRatio: 0.4,
                                xLabelAngle: 35,
                                hideHover: 'auto',
                                resize: true
                            });
                });
           });

答案 42 :(得分:-4)

我在Firefox中遇到了这个问题,我在jquery_1.7.js jquery1_7.js中更改了jQuery js文件的名称后解决了这个问题。所以,我在扩展之前只添加了一个点。