jquery ui对话框:在初始化之前,不能在对话框中调用方法

我有一个应用程序jquery 1.5与对话框工作正常。 虽然我有很多.live处理程序,我把它改成.on。 为此,我必须更新jquery(现在1.8.3和jquerui 1.9.1)。

现在,我得到了: Error: cannot call methods on dialog prior to initialization; attempted to call method 'close' Error: cannot call methods on dialog prior to initialization; attempted to call method 'close'

以下是代码:

使用Javascript

 var opt = { autoOpen: false, modal: true, width: 550, height:650, title: 'Details' }; $(document).ready(function() { $("#divDialog").dialog(opt); $("#divDialog").dialog("open"); ... 

html代码

 <div id="divDialog"> <div id="divInDialog"></div> </div> 

任何想法,为什么这可能会发生?

试试这个

 $(document).ready(function() { $("#divDialog").dialog(opt).dialog("open"); }); 

你也可以这样做:

 var theDialog = $("#divDialog").dialog(opt); theDialog.dialog("open"); 

这是因为对话框没有存储在$('#divDialog') ,而是在一个新的div上,它是由dynamic创build的,并由.dialog(opt)函数返回的。

如果你不能升级jQuery,你会得到:

 Uncaught Error: cannot call methods on dialog prior to initialization; attempted to call method 'close' 

你可以像这样解决它:

 $(selector).closest('.ui-dialog-content').dialog('close'); 

或者,如果您控制视图,并且知道在整个页面上都不应该使用其他对话框,则可以执行以下操作:

 $('.ui-dialog-content').dialog('close'); 

我只会build议这样做,如果使用closest原因性能问题。 有可能还有其他的方法来解决这个问题,而不是在所有的对话上进行全球性的closures。

我得到这个错误,当我只更新jquery库而不更新jqueryui库并行。 我用jqueryui 1.9.0使用jquery 1.8.3。 但是,当我更新jQuery 1.8.3到1.9.1我得到了上述错误。 当我注释到有问题的.close方法.close ,它抛出了一个关于在jquery 1.8.3中弃用并从jquery 1.9.1中删除的jQuery库中找不到.browser的错误。 所以基本上,jQuery 1.9.1库与jquery UI 1.9.0库不兼容,尽pipejquery的UI下载页面说,它与jQuery 1.6+的工程。 本质上,当试图使用两者的不同版本时,有一些未报告的错误。 如果你使用jqueryui下载的jQuery版本,我相信你会好起来的,但是当你开始使用不同的版本时,你会离开这条path并得到类似的错误。 所以,总而言之,这个错误是来自不匹配的版本(无论如何)。

如果要在初始化对话框或页面准备就绪时立即打开对话框,还可以在对话框的选项对象中将参数autoOpen设置为true

 var opt = { autoOpen: true, modal: true, width: 550, height:650, title: 'Details' }; 

因此,你不必调用`$(“#divDialog”)。dialog(“open”);

当对话框对象初始化时,对话框自动打开。

所以你使用这个:

 var theDialog = $("#divDialog").dialog(opt); theDialog.dialog("open"); 

如果你在对话框中打开一个MVC Partial View,你可以在索引中创build一个隐藏button和JQUERY点击事件:

 $("#YourButton").click(function() { theDialog.dialog("open"); OR theDialog.dialog("close"); }); 

然后在部分视图html中调用button触发器点击如下:

 $("#YouButton").trigger("click") 

再见。

这也是一些工作:

 $("div[aria-describedby='divDialog'] .ui-button.ui-widget.ui-state-default.ui-corner-all.ui-button-icon-only.ui-dialog-titlebar-close").click(); 

我得到了这个错误消息,因为我在部分视图上有div标签而不是父视图