gho*_*der 103 javascript jquery minify
我正在建立一个普通的网页,要求我加载大约五个CSS文件和十个Javascript文件.
现在进行制作,我将所有Javascript连接到一个文件中,按所需顺序连接,将所有CSS连接到另一个文件中.但是,当我尝试使用连接文件运行网页时,它会抛出错误说:
Uncaught TypeError: undefined is not a function
在连接的Javascript文件中加载jquery.min.js的行.
我该怎么做才能缓解这种情况?我想连接所有文件并缩小它们以进行生产.请帮忙.
编辑:我按照他们单独加载时的顺序合并了Javascript和CSS,并且工作正常.
小智 175
假设此问题仍未解决,许多单个文件不会以分号结束其代码.大多数jQuery脚本都以(jQuery)你需要的为止(jQuery);.
作为单独的文件,脚本将加载正常,但作为一个单独的文件,您需要分号.
小智 17
这个解决方案对我有用
;(function($){
// your code
})(jQuery);
在闭包内移动代码并使用$而不是jQuery
我在https://magento.stackexchange.com/questions/33348/uncaught-typeerror-undefined-is-not-a-function-when-using-a-jquery-plugin-in-ma中找到了上述解决方案
榨了太多之后
scw*_*scw 15
我对两个不同版本的jQuery的引用有同样的错误.
在我的母版页面中:
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>
Run Code Online (Sandbox Code Playgroud)
还在页面上:
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"> </script>
Run Code Online (Sandbox Code Playgroud)
我最近使用jqu Validation插件遇到了这个问题,使用Squishit,也得到了js错误:
"undefined不是一个函数"
我通过更改对未分析的 jquery.validate.js文件的引用而不是jquery.validate.min.js 来修复它.
@MvcHtmlString.Create(
@SquishIt.Framework.Bundle.JavaScript()
.Add("~/Scripts/Libraries/jquery-1.8.2.min.js")
.Add("~/Scripts/Libraries/jquery-ui-1.9.1.custom.min.js")
.Add("~/Scripts/Libraries/jquery.unobtrusive-ajax.min.js")
.Add("~/Scripts/Libraries/jquery.validate.js")
.Add("~/Scripts/Libraries/jquery.validate.unobtrusive.js")
... more files
Run Code Online (Sandbox Code Playgroud)
我认为某些文件的缩小版本,例如,当使用Squishit进一步压缩时,可能在某些情况下不会处理丢失的分号等,正如@Dustin建议的那样,所以你可能不得不尝试使用哪些文件双重压缩,你只需要留给Squishit或任何你捆绑的东西.
我遇到了同样的问题,当错误地将变量命名为具有相同名称的函数时。
所以这:
isLive = isLive(data);
Run Code Online (Sandbox Code Playgroud)
失败,生成 OP 提到的错误消息。
解决这个问题就像将上面的行更改为:
isItALive = isLive(data);
Run Code Online (Sandbox Code Playgroud)
我不知道在这种情况下它有多大帮助,但我决定将这个答案提供给其他人寻找类似问题的解决方案。
小智 5
是的,我也修复了它在 js 库中更改为 unminified 的问题。
例如,在标签中,更改:
<script type="text/javascript" src="js/jquery.ui.core.min.js"></script>
<script type="text/javascript" src="js/jquery.ui.widget.min.js"></script>
<script type="text/javascript" src="js/jquery.ui.rcarousel.min.js"></script>
Run Code Online (Sandbox Code Playgroud)
为了:
<script type="text/javascript" src="js/jquery.ui.core.js"></script>
<script type="text/javascript" src="js/jquery.ui.widget.js"></script>
<script type="text/javascript" src="js/jquery.ui.rcarousel.js"></script>
Run Code Online (Sandbox Code Playgroud)
退出 'min' 为 unminified。
谢谢你的想法。
对于那些仍然无法解决这个问题的人,我在使用jQuery时将'this'更改为'$(this)'.
例如:
$('.icon').click(function() {
this.fadeOut();
});
Run Code Online (Sandbox Code Playgroud)
固定:
$('.icon').click(function() {
$(this).fadeOut();
});
Run Code Online (Sandbox Code Playgroud)