jQuery UI .dialog()方法在IE6中无声地失败

Ste*_*all 0 javascript jquery jquery-ui internet-explorer-6

我在使用IE6和jQuery UI时遇到了一些麻烦.我有一个弹出对话框(模态,如果重要),它向用户显示一个"是/否"对话框,其中包含一些信息.为了方便这一点,我使用autoOpen = false构建对话框,然后根据需要调用$('#popup').show()以响应各种不同的事件.现在,在IE6中(并且只有IE6,据我所知),.dialog方法偶尔会失败,但STILL会返回jQuery对象.因此,.show()方法只显示html页面中的div容器,而不是显示弹出窗口.

可能导致这种情况的原因,以及我如何解决这个问题?

谢谢.

$('#myDialog').dialog({
            autoOpen: false,
            buttons: {
                "No": function()
                {
                    $(this).dialog('close');
                    //do stuff
                },
                "Yes": function()
                {
                    $(this).dialog('close');
                    //do stuff
                }
            },
            draggable: false,
            modal: true,
            resizable: false,
            title: "Confirmation",
            width: "500px",
            zIndex: 2000
        });
Run Code Online (Sandbox Code Playgroud)

然后

$('#myDialog').dialog('open').show();
Run Code Online (Sandbox Code Playgroud)

很标准.

新的消息

我正在加载一个页面,该对话框使用另一个对话框中的ajax进行对话,可以重复创建和销毁该对话框.现在,每次我的页面加载ajax时,.dialog(opts)应该重新实例化对话框div,对吗?我发现这就是场景.

1.)外部对话框使用ajax将其内容替换为我的内容.

2.)我的内容启动一个先前创建并设置为不自动打开的对话框.

3.)当内部对话框关闭时,外部对话框将被销毁.

4.)重新打开外部对话框.内部对话框不再能够在ie6中显示为对话框.这只发生在ie6.

RaY*_*ell 6

您应该使用打开对话框

$('#myDialog').dialog('open');
Run Code Online (Sandbox Code Playgroud)

代替

$('#myDialog').show();
Run Code Online (Sandbox Code Playgroud)

第一种方法显示实际对话框,而您正在使用的对话框只会#myDialog显示项目(没有UI对话魔术).show()method是核心jQuery库的一部分,不能用于调用对话框.