为什么这段代码会抛出

未捕获引用错误:未定义$

以前什么时候还好?

$(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>

在包含jQueryJavaScript之前,您正在调用ready函数。首先引用jQuery。


您应该首先引用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>

我遇到了完全相同的问题,上面的这些解决方案都没有帮助。然而,我只是将.css文件链接到.js文件之后,问题奇迹般地消失了。希望这有帮助。


在我的案例中,这是一个拼写错误,我忘记了反斜杠,并且错误地引用了源代码。

在src=“/scripts/jquery.js”之前

在src=“scripts/jquery.js”之后


多!我在标记中混合了引号,导致jquery引用中断。通过在Chrome中进行检查,我可以看到文件没有正确链接。


源文件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() 

好吧,我的问题不同了——这是Chrome中的文档安全模型。

看看这里的答案,很明显,在调用$(document).ready()等函数之前,我没有加载jquery文件。然而,他们都处于正确的位置。

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

编辑:这样做的另一种方式是以https://而不是http://的形式链接到所有CDN托管的内容,这样模型就不会抱怨了。


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

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

该片段在src属性中不包含HTTP:或HTTPS:,但我的浏览器FireFox需要它,所以我将其更改为:编辑:这也适用于我的谷歌Chrome

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

然后它奏效了。


缺少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>

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

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

这件事以前发生在我身上。

原因是我正在用JS将android连接到webview。我发送了一个不带引号的参数。

js.sayHello(hello);

当我把它改成

js.sayHello('hello');

它奏效了。


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

首先将链接添加到GoogleApis托管的jQuery文件或您将从中下载的本地jQuery文件http://jquery.com/download/和服务器上的主机:

<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>

在我的例子中,我有这个referenceError,因为脚本调用的顺序错误。通过更改顺序解决了这一问题:

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

to

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

我也遇到过类似的问题,这是因为我缺少样式表链接的结束>。


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

一个RESTAPI调用失败,之后它中断了库的加载。由于失败来自REST调用,所以它不会给我一个php编译错误。

如果可以加载jquery,也可以将其作为一个选项。


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

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

当我连接到正确的wifi连接时,一切似乎都在为我工作。希望这对某人有所帮助。


在我的情况下,我忘了包括以下内容:

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

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


以下是最坏的情况:

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


在我的例子中,我将.js文件放在jQuery脚本链接之前,将.js文档放在jQuery脚本链接之后解决了我的问题。

<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>

再次被这个咬了一口,丢失了库源链接。Google托管库类似的链接


我也有类似的问题。我的测试服务器使用“http”时工作正常。然而,它在具有SSL的生产中失败。

因此,在生产中,我添加了“HTPPS”而不是“HTTP”,在测试中,我保持了“HTTP”。

测试:

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

wp_register_script( 'custom-script', plugins_url( '/js/custom.js', __FILE__ ), array( 'jquery' ) );

生产:

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

wp_register_script( 'custom-script', plugins_url( '/js/custom.js', __FILE__ ), array( 'jquery' ) );

希望这对正在wordpress工作的人有所帮助。


如果是wordpress,可能需要更改

$(document).ready(function() {

to

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

或添加

var $ = jQuery;

之前

$(document).ready(function() {

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

出于测试/调试目的::您可以尝试访问浏览器上的“jquery脚本”url。如果它是可访问的,您的页面应该正确加载,否则它将显示所述错误(或其他脚本相关错误)。示例-http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js应该可以在浏览器(或浏览器上下文实例)上访问。

我也遇到过类似的问题,我可以在windows主机浏览器中加载html页面(使用脚本),但无法在vmubuntu中加载。解决网络问题,解决问题。


我想尝试使我的脚本异步。然后我忘记了这一点,当我上线时,[custom].js文件只在jQuery.js之前加载了50%的时间。

所以我改变了

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

to

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

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

@HTML文件中缺少section-scripts元素访问DOM元素时出错。例如,DOM元素的访问被称为$(“js toggle”)而不是$(“.js togge”)

因此,需要遵循三点:检查是否添加了所需的脚本,检查是否按所需的顺序添加了脚本,以及Java脚本中的第三个语法错误。


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


我修改了脚本标记以指向正确的内容,并将脚本顺序更改为编辑器中的正确顺序。但完全忘记保存更改。


在启动脚本之前添加库。您可以添加以下任何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 cdn版本,请选中此链接。

在此之后:

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

文字印刷机:

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

<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个小时才弄清楚。


$(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
                            });
                });
           });

根本问题是ReferenceError。MDN表示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弹出错误,以防您在页面上运行共享脚本,而该页面没有加载您在页面子集上使用的任何库。


您尚未引用jQuery库。

您需要在HTML中包含一行类似的内容:

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

我也遇到了同样的问题,我通过将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>

希望可以帮助未来的某个人。


在包含jQueryJavaScript之前,您正在调用ready()函数。首先引用jQuery。

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

1,在page.cshtml中,将<script>标记包装到一个部分中,并为其命名,常用名称为“script”:

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

2、在_Layout.cshtml页面中,添加@RenderSection(“Scripts”,必需:false),确保在引用Jquery源代码后放置它,这将使JS代码呈现晚于Jquery。


在我的案例中,安装Windows Server角色服务“静态内容”后,问题已经解决。(操作系统:Windows Server 2008 R2)

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

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


我在尝试运行不同的web套接字示例时遇到了这个问题。

将浏览器指向“”时http://localhost:8080/'我收到了这个错误,但正好指向'http://localhost:8080/index.html'没有给出任何错误,因为在'index.html'中,所有都完全正常-jquery在使用$..之前已包含。。

不知为何,自动转发到index.html没有完全工作


将最新的jquery cdn放在主html页面的顶部

就像如果你的主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><脚本>$(文档).ready(函数){$(“button”).click(函数){$(“h2”).hide();});});</script></head><body><h2>这会把我藏起来</h2><button>单击我</button></body></html>


如果您在警告,当您忘记用以下内容围绕代码时,刀片文件中会出现错误:

@section('section name')

.......

@endsection

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

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

然后首先在jsadd文件中编写脚本

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

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

通过参考以下链接可以清楚地了解这一点参考站点:

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

答:在jQuery库加载后执行代码错误“UncaughtReferenceError:$未定义”背后最常见的原因是在jQuery库文件加载之前执行jQuery代码。因此,确保仅在jQuery库文件加载完成后才执行jQuery代码。