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

时间:2009-07-14 23:48:02

标签: 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
        });

以后

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

很标准。

新信息

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

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

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

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

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

4 个答案:

答案 0 :(得分:6)

您应该使用

打开对话框
$('#myDialog').dialog('open');

而不是

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

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

答案 1 :(得分:1)

我有类似的情况,但从未能够重复使用对话框。我每次都必须销毁并重新创建两个对话框。

答案 2 :(得分:1)

我使用的是bgiframe:true而且我从来没有遇到任何与I6,FFox等有关的问题。

更多信息:http://docs.jquery.com/UI/Dialog#option-bgiframe

问候。

答案 3 :(得分:1)

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

我问的原因是,如果你使用的只是style =“display:none”我从来没有遇到过使用对话框(“打开”)完全显示模态的模态问题,但如果我使用css或jquery ,我总是有问题。

您可能想要测试它。

马库斯