为什么这段代码会抛出

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

以前什么时候还好?

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

当前回答

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

其他回答

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

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

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

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

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

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

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

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

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

如果是wordpress,可能需要更改

$(document).ready(function() {

to

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

或添加

var $ = jQuery;

之前

$(document).ready(function() {

在包含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。