我正在尝试将应用程序从jQuery 1.12.4升级到3.1.1我有几个以特定方式失败的脚本,但我不明白其中的原因。这就是我所看到的。
代码如下所示:
(function( $ ) {
$.widget("ui.voicerecorder",
{
...
});
})( jQuery );
抛出错误:对象不支持属性或方法'小部件'
但是,如果我将其更改为:
$(function() {
$.widget("ui.voicerecorder",
{
...
});
});
错误消失了,但是稍后在jQuery中我再次得到同样的错误:对象不支持属性或方法'小部件'。我不确定在哪里看,或者为什么改变小部件的定义会产生影响。
jQuery 3.1.1中的错误发生在第3855行。
修改 以下是标题中脚本标记的顺序:
<script language="JavaScript" type="text/javascript" src="rui/scripts/jquery/jquery-3.1.1.js?v=5.15b"></script>
<script language="JavaScript" type="text/javascript" src="rui/scripts/jquery/jquery-migrate-3.0.0.js?v=5.15b"></script>
<script language="JavaScript" type="text/javascript" src="rui/scripts/require-2.3.2.js?v=5.15b"></script>
<script language="JavaScript" type="text/javascript" src="rui/scripts/jquery/ui/jquery-ui-1.12.1.js?v=5.15b"></script>
<script language="JavaScript" type="text/javascript" src="rui/scripts/jquery/jquery.misc.js?v=5.15b"></script>
<script language="JavaScript" type="text/javascript" src="rui/scripts/jquery/ui/jquery.menuopts.js?v=5.15b"></script>
<script language="JavaScript" type="text/javascript" src="rui/scripts/jquery/ui/jquery.inbox.js?v=5.15b"></script>
<script language="JavaScript" type="text/javascript" src="rui/scripts/jquery/ui/jquery.themechanger.js?v=5.15b"></script>
<script language="JavaScript" type="text/javascript" src="rui/scripts/jquery/ui/jquery.voicerecorder.js?v=5.15b"></script>
<script language="JavaScript" type="text/javascript" src="rui/scripts/jquery/ui/jquery.keypad.js?v=5.15b"></script>
导致此错误的部分是小部件:jquery.menuopts.js,收件箱,主题转换器,语音记录器,键盘。如您所见,它们都在jquery_ui之后加载小部件代码。如果我改回jquery 1.12和jquery-ui 1.8,所有内容都会使用第一种语法正确加载。这可能是一个时间问题吗?我使用的是IE 11.0。
答案 0 :(得分:0)
在第一个示例中,小部件可能尚未加载。代码立即在一个立即执行的函数中运行。
但是在第二个示例中,您使用了文档就绪处理程序,因此稍后会运行。
$(function() {//...