Как придать следующий самый высокий фокус диалогу после закрытия другого диалога - PullRequest
0 голосов
/ 15 января 2012

У меня есть ситуация, когда пользователь может открыть несколько независимых диалогов.Интуитивно понятно, что диалоговое окно с фокусом можно закрыть либо с помощью значка x, либо нажав ESC.

После закрытия этого диалогового окна можно ли фокусировать следующее диалоговое окно (на основе наибольшего z-индекса),чтобы пользователь мог продолжать нажимать ESC, чтобы закрыть все свои открытые диалоги?

Fiddle here .После загрузки выберите любой диалог, который вы сможете закрыть, нажав ESC.Следующий наивысший диалог не получает фокус.

1 Ответ

2 голосов
/ 15 января 2012

Когда происходит событие close, проверьте наличие видимого div.ui-dialog (закрытие .ui-dialog просто скроет элемент) и имеет наибольшее значение z-index. Затем установите фокус на этом диалоге. Это может быть не самым эффективным, но будет работать:

// ...
close: function() {            
    var index_highest = 0;
    var current_dialog = null;
    $('.ui-dialog').each(function() {
        // we only care about dialogs that are visible
        if ($(this).is(':visible')) {
            // always use a radix when using parseInt
            var index_current = parseInt($(this).css("zIndex"), 10);
            if(index_current > index_highest) {
                index_highest = index_current;
                current_dialog = $(this);
            }
        }
    });
    if (current_dialog) { current_dialog.focus(); }
}
// ...

Обновленная скрипка . Кредит ответ justkt относительно поиска элемента с самым высоким z-индексом с использованием jQuery.

...