JQuery UI对话框 – * Dialog不是函数*错误

我正在使用pinax开发一个网站。 在我的一个模板中,我试图打开一个简单的jquery对话框。 但是我一直得到“Dialog not a function”javascript错误。 我使用的是jquery 1.2.6和jquery-ui 1.6。 我的javascript和HTML如下:

         $(document).ready(function(){ $('#dialogbox').dialog(); });    

Test dialog

有人可以解释为什么会这样吗?

我试图通过使用公共谷歌版本和从jQuery UI网站下载旧版(1.6)并手动包含文件来复制错误。 都没有引起问题( http://jsbin.com/uloqi看它工作)。

所以,这意味着以下之一可能会解决您的问题:

  1. 使用Firebug for Firefox等工具validation是否包含每个JS文件。
  2. 确保页面上没有可能导致错误的其他JS。
  3. 确认您已下载文件的正确版本。

我不知道还有什么可以告诉你,因为你粘贴的代码,当与正确的文件配对,完美的工作。

我遇到了与上述问题完全相同的问题(messagebox只打开一次)。 我遇到的问题是消息框中的html也加载了jquery。 由于我不需要它,我可以毫无问题地删除它。 否则,您可能需要进一步确定问题。

在某些情况下,如果同时加载多个不同的JQuery版本,则可能会出现此错误。

在我的情况下,我有一个使用主人的ASP页面。 我的主人包括JQuery 1.4.2.min我的aspx页面包含了JQuery 1.7.2.min

当从控件调用JQuery函数时,它对使用哪个JQuery感到困惑,因此即使该脚本可以声明JQuery已加载(它可能显示JQuery版本),它也无法找到任何JQuery函数。

当我从我的aspx文件中删除我的本地JQuery 1.7.2.min包含,并将我的母版从1.4.2.min更新到1.7.2.min时,问题就消失了。

Doug Neiner的回答非常有帮助。 我的情况有点复杂,但仍然有同样的意义:

我从页面A打开了一个对话框,它会像这样加载页面B:

 $('#MyDiv').dialog({ autoOpen: false }) $("#MyDiv").load("PageB.aspx", function () { $("#MyDiv").dialog("open"); }); 

问题是Page A和B都包含了jQuery。 请注意:如果要将另一个页面加载到对话框中,则不需要包含相同的js。

如前所述,您可能会覆盖现有的库。

处理它的一种方法是确保加载正确的文件。

另一种方法是在对话框和对话框中的内容之间插入iframe。 浏览器将iframe视为具有自己脚本的单独页面。 因此,内容“在iframe之上”的脚本将与iframe“下”对话框的脚本分开。

我也有这个问题,唯一适用于我的解决方案是保存对话框引用,如:

 var confirmDialog = $( "#dialog-confirm" ).dialog({ autoOpen: false }); $("#test").click(function () { confirmDialog.dialog('open'); }); 

否则,我尝试的一切都失败了

  .dialog()不是函数错误 

希望这有帮助。

我有同样的问题。 我从1.11.4到1.12.1的jQuery UI更新中自我造成了这种情况。 我使用NuGet安装了升级,NuGet从我的项目中删除了旧的1.11.4引用,但从未添加新的项目引用。

在本地运行该应用程序运行良好,但在部署它时,新的1.12.1文件从未使用发布。 我希望这有助于其他人。