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标签而不是父视图