类型错误:$(...)。对话框不是一个函数错误

8

我在 Stack Overflow 上看了关于这个主题的帖子,但是无法得到所需的输出。他们说这个问题是由于一些 js 文件被多次包含而引起的。但我尝试逐个删除多个文件,仍然出现 TypeError: $(...).dialog is not a function 错误。我在哪里包含了多个 js 文件?有人能指出吗?谢谢。

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/jquery-ui.min.js"></script>

<script type="text/javascript" src="{% static "js/bootstrap.js" %}" ></script>
<script type="text/javascript" src="{% static "dashboard/js/jquery-ui-personalized-1.6rc2.min.js" %}" ></script>
<script type="text/javascript" src="{% static "dashboard/js/inettuts.js" %}" ></script>    
<script type="text/javascript" src="{% static "dashboard/js/dashboard.js" %}" ></script>

我收到的错误信息是:-
Error: Syntax error, unrecognized expression: #intro,
    ...nction(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"...    
jquery.min.js (line 4)

TypeError: t.widget.extend is not a function
    ..."drag",e,s)===!1)return this._mouseUp({}),!1;this.position=s.position}return thi...
   jquery-ui.min.js (line 5) 

1
为什么要包含那么多jquery库? - u_mulder
1
不是一个好的做法。多个jQuery库会导致灾难。 - Joke_Sense10
我已经删除了多个JS文件,但仍然出现一些新的错误。请查看更新后的问题。 - Praful Bagai
你還有一個個性化的。不確定那是什麼意思。 - emerson.marini
MVC5用户注意:当您尝试插入超过1个Jquery库或1个版本的jquery但超过1次时,例如第一次从Bundle中,另一次从手动中,将会发生错误。请注意避免此类情况。 - Chinh Phan
3个回答

10

在同一个页面上加载了几个jQuery库(相同内容的不同版本),这是错误的,除非您确实需要保留依赖于旧版本的插件。在这种特定情况下,您需要解决冲突。

就是这样。

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/jquery-ui.min.js"></script>

<script type="text/javascript" src="{% static "js/bootstrap.js" %}" ></script>
<!-- Not so sure what is this, but certainly it's another jQuery UI library being loaded on top of the other one -->
<!-- <script type="text/javascript" src="{% static "dashboard/js/jquery-ui-personalized-1.6rc2.min.js" %}" ></script>-->
<script type="text/javascript" src="{% static "dashboard/js/inettuts.js" %}" ></script>    
<script type="text/javascript" src="{% static "dashboard/js/dashboard.js" %}" ></script>

在这里查找CSS样式表(尝试更改主题):http://jqueryui.com/

jQuery UI对话框:http://jqueryui.com/dialog/

更新

在我们评论区的聊天后,我发现你正在使用一个名为inettuts的插件,它基于非常旧的jQuery和jQuery UI库(1.2.x版本)。此外,它使用了一个定制版本的jQuery UI,其中不包括dialog小部件,因此出现了第一个错误消息。

你可以尝试将该插件适应新版本(遵循其网站上的评论)或解决冲突并在同一页上使用两个库。

现在由你决定。


现在它给我两个错误。jQuery.min.js 中的 Error: Syntax error, unrecognized expression: #introjquery-ui.min.js (第5行) 中的 TypeError: t.widget.extend 不是一个函数 - Praful Bagai
之前的错误 TypeError: $(…).dialog is not a function Error 已经被移除,但是出现了两个新的错误。 - Praful Bagai
我也把那个删掉了。但是我仍然得到第一个错误,即 Error: Syntax error, unrecognized expression: #intro, ...nction(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"... - Praful Bagai
实际上,我正在实现这个。因此,使用他们的库来创建和拖动小部件,因此使用他们的js库文件(旧文件)。为了添加模态表单,我使用不同的js库(新文件)。因此,当我删除js文件(你不确定的那个)时,小部件的拖动功能就会消失。所以我认为我需要同时添加旧的和新的js文件。如果您还没有理解,请再问。谢谢。 - Praful Bagai
我知道他们使用古老版本的jQuery。但是我懒得写自己的代码。现在我会从头开始编写它。谢谢你的帮助。 :) - Praful Bagai
显示剩余14条评论

0

确保你在jsp/html中引用的js库在相应的文件夹中。大多数情况下,它会在WebContent文件夹中或者你在jsp中指定的路径中。对于我来说,它在/resources/scripts文件夹中。一旦我把库添加到那里


0
在生成的源代码中查看,然后找出所有对jquery的引用,然后检查是否只有一个对jquery和一个对jquery UI的引用。

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