JQuery UI Dialog - при каждом открытии диалога убедитесь, что все остальные закрыты - PullRequest
1 голос
/ 01 ноября 2010

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

Ответы [ 3 ]

8 голосов
/ 01 ноября 2010

Во все диалоги добавлен класс ui-dialog-content, так что вы можете просто сделать это при открытии диалога:

$(".ui-dialog-content").dialog("close");
$("#myDialog").dialog("open");
1 голос
/ 01 ноября 2010

Предполагая, что вы на самом деле не хотите ограничивать возможность пользователей открывать более одного диалога, делая каждый диалог модальным (чтобы они не могли щелкнуть где-либо на странице, пока диалог не был намеренно закрыт), я бы сказал, что вы хотитекэшировать ваши диалоги в переменной, а затем перебирать этот массив, чтобы закрыть их все перед открытием цели.Не проверяя то, что я пишу здесь, попробуйте что-то вроде этого:

var options = {
    autoOpen: false,
    modal: true,
    ...
};

var dlg = $('dialog-candidate-' + n);

$(dlg).each(function(i) {
    $(this).dialog(options);
    $('#dialog-trigger-' + n).click(function() {
        for(var i = 0; i<= dlg.length; i++) {
          dlg[0].dialog("close");
        }
        $(this).dialog("open");
        return false;
    });
    n++;
});
1 голос
/ 01 ноября 2010

Если вы используете диалог jquery-ui, вы должны иметь возможность использовать что-то похожее на $ (". SelectorClass"). Dialog ("destroy"), чтобы вернуть все диалоги в исходное (скрытое) состояние. (Обязательно укажите свой собственный класс селектора / идентификатор курса!)

Для получения дополнительной информации, ознакомьтесь с http://jqueryui.com/demos/dialog/

...