Javascript JQUERY对话框未捕获错误:无法在初始化之前调用对话框上的方法
我使用以下javascript打开一个包含部分视图的JQUERY对话框: htmlJavascript JQUERY对话框未捕获错误:无法在初始化之前调用对话框上的方法,javascript,jquery,asp.net-mvc,Javascript,Jquery,Asp.net Mvc,我使用以下javascript打开一个包含部分视图的JQUERY对话框: html <div id="dialog" title="Address Finder" style="overflow: hidden;"></div> 当我第一次打开页面并单击addressLookupBtn时,对话框窗口打开并显示部分视图,然后我将其关闭,但下一次尝试打开时,我得到: 未捕获错误:无法在初始化之前调用对话框上的方法; 试图调用方法“open” 我已经查看了这个错误消息,它似乎
<div id="dialog" title="Address Finder" style="overflow: hidden;"></div>
当我第一次打开页面并单击addressLookupBtn
时,对话框窗口打开并显示部分视图,然后我将其关闭,但下一次尝试打开时,我得到:
未捕获错误:无法在初始化之前调用对话框上的方法;
试图调用方法“open”
我已经查看了这个错误消息,它似乎与我用来加载局部视图的$(this)
有关,我尝试声明一个变量,该变量将保持上下文如下:
var $this = $(this);
但是我不确定它应该放在哪里,我试着把它放在click函数和open函数中,并调用它而不是$(this)
,但它给了我同样的错误
编辑
$(function () {
$('#dialog').dialog({
autoOpen: false,
title: 'Address Lookup Tool',
modal: true,
show: {
effect: "fade",
duration: 1000
},
hide: {
effect: "fade",
duration: 1000
},
open: function (event, ui) {
//Load the AddressLookup action which will return
// the partial view: _AddressLookup
$(this).load("@Url.Action("AddressLookup")");
}
});
$('#addressLookupBtn').click(function () {
$('#dialog').dialog('open');
});
});
如果我加上:
$('#addressLookupBtn').click(function () {
$('#dialog').dialog().dialog('open');
});
对话框将按预期打开和关闭,但只在第一次执行淡入淡出效果,从那时起它将弹出。问题是,使用
.load
ajax调用,您将替换对话框DIV中的所有内容,甚至是jQuery为使其工作而添加的内容
在对话框中添加并清空DIV,然后对其调用。load
<div id="dialog" title="Address Finder">
<div style="overflow: hidden;"></div>
</div>
每次单击botton时,我都需要初始化一个新对话框,这就成功了:
<script type="text/javascript">
$(function () {
$('#addressLookupBtn').click(function () {
$('#dialog').dialog({
autoOpen: false,
title: 'Address Lookup Tool',
modal: true,
width: 700,
show: {
effect: "fade",
duration: 1000
},
hide: {
effect: "fade",
duration: 1000
},
open: function (event, ui) {
//Load the AddressLookup action which will return
// the partial view: _AddressLookup
$(this).load("@Url.Action("AddressLookup")");
}
}).dialog('open');
});
});
</script>
$(函数(){
$('#addressLookupBtn')。单击(函数(){
$('#dialog')。dialog({
自动打开:错误,
标题:“地址查找工具”,
莫代尔:是的,
宽度:700,
展示:{
效果:“褪色”,
持续时间:1000
},
隐藏:{
效果:“褪色”,
持续时间:1000
},
打开:功能(事件、用户界面){
//加载将返回的AddressLookup操作
//部分视图:\u AddressLookup
$(this.load(“@Url.Action”(“AddressLookup”)”);
}
}).对话框(“打开”);
});
});
不确定您的意思,能否提供一些代码示例?好的,完成此操作后,结果相同,错误消息相同try$(“#dialog”).load(@Url.Action(“AddressLookup”);在创建对话框之前,而不是在内部打开事件之前。不确定要将其转到何处如果这样做,请删除autoOpen:false
和.dialog('open')
,因为它们的作用正好相反
<script type="text/javascript">
$(function () {
$('#addressLookupBtn').click(function () {
$('#dialog').dialog({
autoOpen: false,
title: 'Address Lookup Tool',
modal: true,
width: 700,
show: {
effect: "fade",
duration: 1000
},
hide: {
effect: "fade",
duration: 1000
},
open: function (event, ui) {
//Load the AddressLookup action which will return
// the partial view: _AddressLookup
$(this).load("@Url.Action("AddressLookup")");
}
}).dialog('open');
});
});
</script>