为什么我的 JQuery 插件会导致“无法读取未定义的 'length' 属性”错误?

8

我有点不好意思再次提出一个“无法读取未定义的长度属性”的问题,但所有在线(SE或其他)答案都与我的问题毫不相关。

我已经尽力缩小为什么我的脚本会出现这个错误,但我束手无策。

如果我在页面中排除此标签,则该错误将不会出现:

<script src="~/Plugins/jquery-ui-1.10.3.drag-drop.min.js" type="text/javascript"></script>
jquery-ui-1.10.3.drag-drop.min.js文件只是我重命名的jquery-custom文件,包含了jquery可拖动、放置和排序的功能。我确信错误是由我编写的一些脚本引起的,但由于我刚开始测试,因此没有太多脚本可以“注释掉”,当我这样做时,令我困惑的是,它并没有消除错误。目前我发现唯一的消除错误的方法就是完全排除插件,但如果这样做,显然我将无法使用它。以下是在Chrome的调试器中看到的完整错误信息:
Uncaught TypeError: Cannot read property 'length' of undefined      jquery-1.9.1.min.js:3
b.extend.each                                                       jquery-1.9.1.min.js:3
e.widget                                                            jquery-ui-1.10.3.drag-drop.min.js:6
(anonymous function)                                                jquery-ui-1.10.3.drag-drop.min.js:6
(anonymous function)                                                jquery-ui-1.10.3.drag-drop.min.js:6

问题是(与大多数此类错误一样),即使没有编写任何代码来使用此插件,我也无法追踪为什么会导致错误。
我正在使用jquery-1.9.1.min.jsjquery-migrate-1.2.1.min.js文件。
实际上,我可以忽略这个错误,因为它并没有真正破坏任何东西,并且拖放和排序功能似乎都正常工作。但我认为在页面中有脚本错误是不美观的,而且我过去从未容忍过它们,所以现在也不想开始容忍它们。
我是否走错了方向?错误是否未指向我的拖放文件?我该如何帮助缩小此错误的范围?
如果有任何更多的信息可以提供的话,请告诉我。
如请求所示,<script>标记按其出现顺序出现在<head>标记中:
<script src="~/Resources/jquery-1.9.1.min.js" type="text/javascript"></script>
<script src="~/Resources/jquery-migrate-1.2.1.min.js" type="text/javascript"></script>
<script src="~/Plugins/jquery.maskedinput.min.js" type="text/javascript"></script>
<script src="~/Plugins/jquery-ui.min.js" type="text/javascript"></script>
<script src="~/Plugins/accounting.min.js" type="text/javascript"></script>
<script src="~/Plugins/jquery.autoellipsis-1.0.10.min.js" type="text/javascript"></script>
<script src="~/Plugins/jquery-ui-1.10.3.drag-drop.min.js" type="text/javascript"></script>
<script src="~/Scripts/PluginConfigurations.js" type="text/javascript"></script>
<script src="~/Scripts/main.js" type="text/javascript"></script>
<script src="~/Scripts/EditPages.js" type="text/javascript"></script>

1
也许这是插件内部的错误?你能把页面上除了插件以外的所有东西都清除掉,看看问题是否仍然存在吗? - andi
你能展示所有已渲染的脚本标签并按照它们运行的顺序排列吗? - Pete
3
jquery-ui.min.js是否包含jquery-ui-1.10.3.drag-drop.min.js中的插件? - Pete
4
我认为这只是所有插件的缩小版本(除非您选择下载ui的特定部分),很高兴我能帮忙——我也不知道怎么回答! - Pete
@Pete,如果你能想出什么办法,这里有免费的积分等着你 :)(嗯,考虑到你帮我做了这些工作,所以它并不是免费的,但这也是为什么我渴望奖励你)。再次感谢 :) - VoidKing
显示剩余5条评论
2个回答

19

正如@Pete已经帮助您所识别的那样,这确实是由于重复加载了jQuery UI核心脚本所导致的。只需加载一次即可,您的“Undefined的长度”问题就会消失。


谢谢!我刚遇到同样的错误,这个解决了它。 :-) - Simon East

0

正如@Pete所帮助您确定的那样,这确实是由于重复加载jQuery UI核心脚本引起的。只需加载一次它们,您的“未定义长度”问题就会消失。

包含以下文件两次将导致此问题。

jquery.ui.core.min.js

请确保您只包含一次。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接