Метод jQuery UI .dialog () завершается с ошибкой в ​​IE6 - PullRequest
0 голосов
/ 15 июля 2009

У меня проблемы с IE6 и jQuery UI. У меня есть всплывающее диалоговое окно (модальное, если это имеет значение), которое отображает диалоговое окно «да / нет» для пользователя с некоторой информацией. Чтобы упростить это, я создаю диалог с autoOpen = false, а затем при необходимости вызываю $ ('# popup'). Show () в ответ на различные события. Теперь, в IE6 (и, насколько я могу судить, только в IE6), метод .dialog иногда завершается ошибкой, но STILL возвращает объект jQuery. Поэтому вместо отображения всплывающего окна метод .show () просто отображает контейнер div на html-странице.

Что может быть причиной, и как я могу исправить это поведение?

Спасибо.

$('#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 ]

6 голосов
/ 15 июля 2009

Вы должны открыть диалог, используя

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

вместо

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

Первый метод отображает фактическое диалоговое окно, в то время как тот, который вы используете, просто вызывает отображение элемента #myDialog (без магии диалога пользовательского интерфейса). show() метод является частью базовой библиотеки jQuery и не должен использоваться для вызова диалога.

1 голос
/ 25 января 2010

Кстати, когда вы скрываете свой модал перед тем, как открыть его, используете ли вы style = "display: none" в качестве атрибута скрытия, или класс CSS, или jquery?

Причина, по которой я спрашиваю, заключается в том, что если вы используете просто style = "display: none", у меня никогда не возникает проблем с модальным показом модального режима все время с использованием диалога ("open"), но если я использую css или jquery У меня всегда есть проблемы.

Вы можете проверить это.

Марк

1 голос
/ 21 июля 2009

Я использую bgiframe: true, и у меня никогда не возникало с ними проблем с I6, FFox и т. Д.

Подробнее: http://docs.jquery.com/UI/Dialog#option-bgiframe

С уважением.

1 голос
/ 17 июля 2009

У меня была похожая ситуация, и я так и не смог повторно использовать диалог. Мне приходилось каждый раз уничтожать и воссоздавать оба диалога.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...