Javascript jQuery UI.dialog()方法在IE6中以静默方式失败

Javascript jQuery UI.dialog()方法在IE6中以静默方式失败,javascript,jquery,jquery-ui,internet-explorer-6,Javascript,Jquery,Jquery Ui,Internet Explorer 6,我在IE6和jQueryUI方面遇到了一些问题。我有一个弹出对话框(模式,如果有关系的话),它向用户显示一个带有一些信息的“是/否”对话框。为了方便这一点,我使用autoOpen=false构建了对话框,然后根据需要调用$('#popup').show(),以响应各种不同的事件。现在,在IE6(据我所知,只有IE6)中,.dialog方法偶尔会失败,但仍然返回jQuery对象。因此,.show()方法不是显示弹出窗口,而是在html页面中显示一个div容器 这可能是什么原因造成的,我如何纠正这种

我在IE6和jQueryUI方面遇到了一些问题。我有一个弹出对话框(模式,如果有关系的话),它向用户显示一个带有一些信息的“是/否”对话框。为了方便这一点,我使用autoOpen=false构建了对话框,然后根据需要调用$('#popup').show(),以响应各种不同的事件。现在,在IE6(据我所知,只有IE6)中,.dialog方法偶尔会失败,但仍然返回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
        });
后来

$('#myDialog').dialog('open').show();
相当标准

新信息

我正在加载一个页面,该页面使带有ajax的对话框位于另一个对话框中,该对话框可以重复创建和销毁。现在,每次我的页面加载ajax时,.dialog(opts)都应该重新实例化dialog div,对吗?我发现情况就是这样

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

2.“我的内容”将启动以前创建并设置为“不自动打开”的对话框

3.)当内部对话框关闭时,外部对话框被破坏


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

您应该使用

$('#myDialog').dialog('open');
而不是

$('#myDialog').show();

第一种方法显示实际的对话框,而您使用的方法只会显示
#myDialog
项(没有UI对话框)
show()
方法是核心jQuery库的一部分,不应用于调用对话框。

我也遇到过类似的情况,因此无法重用该对话框。每次我都必须销毁并重新创建两个对话框。

我使用bgiframe:true,而且我在I6、FFox等方面从未遇到任何问题

更多信息:


关于。

顺便问一下,当您在打开模态之前隐藏它时,您是使用style=“display:none”作为隐藏属性还是CSS类或jquery

我问这个问题的原因是,如果您使用simply style=“display:none”,我永远不会对使用dialog(“open”)始终完美地显示模式有任何问题,但是如果我使用css或jquery,我总是有问题

您可能需要测试它


马库斯

一个关于这个问题的链接/屏幕广播,或者展示你的脚本可能会有助于解决我的问题。我错了。我正在使用$('#blah').dialog('open').show();在创建对话框之前,内容是隐藏的。您不需要在对话框(“打开”)之后运行show()方法,UI对话框将自动使$('#blah')的内容可见,但不会。至少在任何IE变体中都没有。我已经彻底测试了这个场景。对不起,你错了。我准备了一个小演示,证明您不需要使用show()方法。查看加载对话框1。通过对话框2的ajax加载数据。以模式对话框的形式打开对话框2。不起作用。您必须显示它,而我仍然有问题,不管文本只是推到文档底部,而不是在实际的弹出窗口中显示。除了说出你认为正确的语义和忽略解决核心问题之外,你没有做任何事情来解决我最初的问题。破坏和重新创建似乎会扰乱“模态”对话框的行为。如中所示,灰色调光位未移除。也许是关闭和摧毁?我想我会试试的。我只是试了一下,因为这似乎是唯一可能的解决办法,我在第二轮中就成功了。我认为疯狂的撞车是不正确的行为:P。非常感谢!从开发开始,我就有了bgiframe。没有骰子。任何读过这篇文章的人:bgiframe对于ie6和jQueryUI都是必不可少的。这与我的问题无关,但是没有bgiframe你会头疼的。