Uncaught TypeError: $(...) is not a function while using morris.js chart

Uncaught TypeError: $(...) is not a function while using morris.js chart

我在我的网页上使用莫里斯图,但我一直收到错误消息:

Uncaught TypeError: $(...) is not a function

当您使用莫里斯图表进入此页面时,它也会在控制台中可见 - http://jqueryajaxphp.com/preview/charts/这里有什么问题?

通常在JQuery还未初始化时抛出这个错误...

检查您的代码,JQuery 是第一个加载的...类似:

<!-- First of all jquery... -->
<script type="text/javascript" src="/js/jquery/jquery.min.js"></script>
<!-- ... Then all the javascripts you need --> 
<script type="text/javascript" src="yourScript.js"></script> 

您混淆了两种不同的 jQuery 模式。

这个:

$(function($) { });

…当达到就绪状态时将调用一个函数。

这个:

(function ($, window, undefined) {

})(jQuery, window);

... 会将您的变量捕获在闭包中并增加 $windowundefined 具有正确值的机会。

您正在这样做:

$(function ($, window, undefined) {

})(jQuery, window);

… 它试图调用 $() 的 return 值,就好像它是一个函数,但事实并非如此。

要组合这两种模式,您可以这样做:

(function ($, window, undefined) {
    $(function($) { 

    });
})(jQuery, window);

就是说,更典型的做法是相信 windowundefined 不会乱来并执行此操作:

jQuery(function($) { 

});