Jquery - 类型错误,不是函数

时间:2014-03-10 10:31:46

标签: javascript jquery

我正在开发一个嵌入客户网站的小部件,它会加载一个jquery文件。但是我们需要检测是否已经在客户页面上加载了jquery以避免冲突,然后不加载我们自己的jquery。

作为旁注,小部件适用于所有版本的jquery。正在使用的代码是......

 if (typeof jQuery == 'undefined') {
 console.log("NOT LOADED");
 scripts.push("https://d33f10u0pfpplc.cloudfront.net/perun/v1/js/widget/betaV2/jquery-1.8.2-min.js");
 }

这在本地测试时有效,但是当它在某些网站上推出时我们得到了...

类型错误$ tabs(...)不是函数

似乎主机网站上的jquery一定不能完全加载是我最初的理论(可能是错的)

有没有办法改进上面使用的jquery检测?或者如果你知道它为什么不起作用我很乐意学习。感谢

4 个答案:

答案 0 :(得分:2)

首先,$tabs不是标准的jQuery函数。如果它是插件的一部分,您还需要确保包含插件。

还要确保jQuery未在noConflicts模式下运行。在这种情况下,可以定义jQuery,但不能定义$

答案 1 :(得分:1)

您是否检查了浏览器的加载状态? Javascript通常在浏览器解析时执行。 Jquery是一个更大的文件,有时它会先执行即将发布的代码。

要解决此问题,请确认在加载dom后执行自己的代码:

$(function() {
    // your code here
});

备选方案2是检查

scripts.push()
确实如此。它需要是异步的,只是添加文件请求并不能确保文件被加载和解析。也许这是你的问题。

在小部件中使用jQuery并不是最佳选择。是否可以在原生js中编写它?

答案 2 :(得分:0)

这可能没什么帮助,但在http://www.initializr.com/

的示例中

jQuery检查了

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
        <script>window.jQuery || document.write('<script src="js/vendor/jquery-1.10.1.min.js"><\/script>')</script>

答案 3 :(得分:0)

请检查您的jquery版本,并且您的版本没有$tabs jquery函数。

然后只有你遇到这种类型的错误

  

$ tabs(...)不是函数。

否则尝试新版本的jquery_ui文件。