Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JQUERY对话框未捕获错误:无法在初始化之前调用对话框上的方法_Javascript_Jquery_Asp.net Mvc - Fatal编程技术网

Javascript JQUERY对话框未捕获错误:无法在初始化之前调用对话框上的方法

Javascript 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” 我已经查看了这个错误消息,它似乎

我使用以下javascript打开一个包含部分视图的JQUERY对话框:

html

<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>