Уничтожение нескольких диалоговых окон - PullRequest
0 голосов
/ 18 января 2011

Hii,
У меня проблема с использованием диалогового окна в jquery. В какой-то момент может сработать событие, которое отображает диалоговое окно, и до закрытия этого диалогового окна может сработать другое событие, которое отображает новое диалоговое окно.

До сих пор я явно закрываю диалоговое окно, прежде чем открывается другое диалоговое окно, используя для каждого идентификатора уничтожение.

   if($('#'+errorId).dialog("isOpen"))
                $('#'+errorId).dialog("destroy");
if($('#'+successId).dialog("isOpen"))
            $('#'+successId).dialog("destroy");

Мне нужно закрыть все диалоговые окна за один раз, а не по одному.
Возможно ли такое решение? Если да, пожалуйста, дайте мне знать.

Заранее спасибо.

С уважением
Фани Кумар

Ответы [ 2 ]

0 голосов
/ 18 января 2011

Поместите класс X скажем 'dialog' на каждый из контейнеров, открытых как диалоги, и затем позвоните $ ('.dialog').dialog('close')

0 голосов
/ 18 января 2011

Одним из быстрых решений было бы сохранить ссылки на jQuery-Object в массиве как глобальную переменную. Например:

globalarray = new Array();
var jDialog = jQuery('selector').dialog({
   parameters: go here
});    
globalarray.push(jDialog);

При таком подходе у вас будет разделение представления и логики, и вы можете просто перебрать массив следующим образом:

function destroy_all_dialogs() {
   var max_length = i.length
   for (var i=0; i<max_length; ++i) {
      var jDialog = globalarray[i];
      jDialog.dialog('destroy');
   }
}

Обратите внимание, что это упрощенное решение. Если вы хотите быть более конкретным (возможно, закрыть только диалоги определенного контекста), вам понадобится более сложный объект для управления этим. Кроме того, я разбил все на переменные для лучшего понимания каждого шага, но вы можете сгруппировать некоторые операторы вместе, если для вас слишком много переменных;)

Примечание

Если ваш триггер настроен так, что он всегда срабатывает перед закрытием, вы должны удалить триггер перед закрытием. Вы можете добавить это к функции destroy_all_dialogs.

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