Spec-Zone.ru › jQuery Mobile

Диалоговое виджет

Диалоговое виджетверсия добавлена: 1.0, устарела: 1.4.0

Описание: Открывает содержимое во всплывающем интерактивном окне.

Быстрое навигацияПримеры

Параметры

closeBtn
closeBtnText
corners
defaults
disabled
initSelector
overlayTheme

Методы

close

События

create
Примечание: Диалоговые окна устарели с версии jQuery Mobile 1.4.0 и будут удалены в версии 1.5.0. Параметр dialog, предоставляемый расширением page.dialog виджета page, позволяет стилизовать страницу как диалоговое окно, однако специальная обработка навигации будет удалена. Также можно рассмотреть реализацию диалоговых окон с помощью виджетов popup.

Любая страница может быть представлена как модальное диалоговое окно, добавив атрибут data-rel="dialog" к ссылке якоря страницы. При применении атрибута "dialog", фреймворк добавляет стили для скругленных углов, отступов вокруг страницы и тёмного фона, чтобы диалоговое окно выглядело как приостановленное над страницей.

<a href="foo.html" data-rel="dialog">Open dialog</a>

Вы можете открыть диалоговое окно программно, вызвав метод $.mobile.changePage:

// Dialog loaded via Ajax
$.mobile.changePage( "path/to/dialog.html", { role: "dialog" } );
 
// Dialog present in a multipage document
$.mobile.changePage( "#myDialog", { role: "dialog" } );

Переходы

По умолчанию диалоговое окно откроется с переходом 'pop'. Как и все страницы, вы можете указать любой переход страницы для диалогового окна, добавив атрибут data-transition к ссылке. Для более диалогового ощущения рекомендуется указать переход "pop", "slidedown" или "flip".
Возможные значения: fade, pop, flip, turn, flow, slidefade, slide, slideup, slidedown, none.

<a href="foo.html" data-rel="dialog" data-transition="pop">Open dialog</a>

Закрытие диалоговых окон

При нажатии на любую ссылку внутри диалогового окна фреймворк автоматически закроет диалоговое окно и перейдёт к запрошенной странице, как если бы диалоговое окно было обычной страницей. Тем не менее, диалоговые окна также могут быть объединены, как объяснено ниже в разделе "Цепные диалоговые окна". Аналогично, ссылка, которая открывает всплывающее окно, также оставит диалоговое окно на месте.

Если у диалогового окна есть заголовок, фреймворк добавит кнопку закрытия слева от заголовка. Вы можете изменить позицию, добавив data-close-btn="right" к контейнеру диалогового окна. Если вы не хотите кнопку закрытия в заголовке или хотите добавить свою пользовательскую кнопку закрытия, вы можете использовать data-close-btn="none".

Для создания кнопки "отмена" в диалоговом окне просто ссылайтесь на страницу, которая открыла диалоговое окно, и добавьте атрибут data-rel="back" к вашей ссылке. Этот шаблон связывания с предыдущей страницей также пригоден для устройств без JS.

Для сгенерированных JavaScript-ссылок вы можете просто установить атрибут href в "#" и использовать атрибут data-rel="back". Вы также можете вызвать метод close() диалогового окна для программного закрытия диалоговых окон, например: $( ".ui-dialog" ).dialog( "close" ).

Установка текста кнопки закрытия

Как и в виджете страниц, вы можете установить текст кнопки закрытия диалогового окна с помощью параметра или атрибута данных. Параметр может быть настроен для всех диалоговых окон путём привязки к событию mobileinit и установки свойства $.mobile.dialog.prototype.options.closeBtnText на строку по вашему выбору, или вы можете разместить атрибут данных data-close-btn-text для настройки текста из вашей разметки.

История и поведение кнопки "Назад"

Поскольку диалоговые окна обычно используются для поддержки действий на странице, фреймворк не включает диалоговые окна в отслеживание истории состояния хеша. Это означает, что диалоговые окна не будут отображаться в истории просмотра при нажатии кнопки "Назад". Например, если вы находитесь на странице, нажимаете ссылку для открытия диалогового окна, закрываете диалоговое окно, переходите на другую страницу, если нажмёте кнопку "Назад" в браузере, вы вернётесь на первую страницу, а не на диалоговое окно.

Цепные диалоговые окна

Обратите внимание: если диалоговое окно открывает другое диалоговое окно (цепочка), закрытие последнего с помощью ссылки типа data-rel="back" всегда переходит к предыдущему диалоговому окну, пока не будет достигнута корневая страница типа data-role="page". Это гарантирует последовательную навигацию между диалоговыми окнами.

Стиль и тема

Диалоговые окна могут быть стилизованы с помощью различных тематических цветовых схем, как и любая страница, добавив атрибуты data-theme к контейнерам заголовка, содержимого или подвала.

По умолчанию у диалоговых окон скругленные углы. Параметр corners может быть установлен в false, добавив data-corners="false" к контейнеру диалогового окна:

Диалоговые окна появляются как плавающие над слоем перекрытия. Это перекрытие по умолчанию использует цветовой оттенок 'a' содержимого, но атрибут data-overlay-theme может быть добавлен к оболочке страницы, чтобы установить перекрытие на любой цветовой оттенок.

Диалоговые окна также могут использоваться как панель управления для предложения нескольких кнопок, если вы просто удалите верхний отступ из внутреннего контейнера диалогового окна. Например, если ваша страница диалогового окна имела класс my-dialog, вы могли бы добавить этот CSS для привязки этого диалогового окна к верху: .ui-dialog.my-dialog .ui-dialog-contain { margin-top: 0 }, или вы могли бы просто применить этот стиль ко всем диалоговым окнам с помощью .ui-dialog .ui-dialog-contain { margin-top: 0 }.

Ширина и отступы диалогового окна

Для лучшей читаемости диалоговые окна имеют по умолчанию ширину width 92.5% и max-width 500 пикселей. Также есть верхний отступ margin 10%, чтобы диалоговые окна имели больший верхний отступ на больших экранах, но уменьшались до маленького отступа на смартфонах. Внутренний контейнер диалогового окна смещён в top на 15 пикселей, чтобы скрыть стили углов, если диалоговое окно используется как панель управления (см. выше). Чтобы переопределить эти стили, добавьте следующую CSS-правило в свой stylesheet и настройте по необходимости:

.ui-dialog-contain {
  width: 92.5%;
  max-width: 500px;
  margin: 10% auto 15px auto;
  padding: 0;
  position: relative;
  top: -15px;
}

Параметры

closeBtn

Тип: Строка
По умолчанию: "left"

Устанавливает положение кнопки закрытия диалога в заголовке (слева или справа) или предотвращает добавление кнопки закрытия (нет).

Этот параметр также доступен как атрибут данных: data-close-btn.

Примеры кода:

Инициализируйте диалог с указанным параметром closeBtn:

$( ".selector" ).dialog({
  closeBtn: "none"
});

Получите или установите параметр closeBtn после инициализации:

// Getter
var closeBtn = $( ".selector" ).dialog( "option", "closeBtn" );
 
// Setter
$( ".selector" ).dialog( "option", "closeBtn", "none" );

closeBtnText

Тип: Строка
По умолчанию: "Close"

Настраивает текст кнопки закрытия, что полезно для перевода на разные языки. Кнопка закрытия по умолчанию отображается как кнопка только с иконкой, поэтому текст не виден на экране, но считывается средствами чтения с экрана, поэтому это важная функция доступности.

Этот параметр также доступен как атрибут данных: data-close-btn-text="Fermer".

Примеры кода:

Инициализируйте диалог с указанным параметром closeBtnText:

$( ".selector" ).dialog({
  closeBtnText: "Fermer"
});

Получите или установите параметр closeBtnText после инициализации:

// Getter
var closeBtnText = $( ".selector" ).dialog( "option", "closeBtnText" );
 
// Setter
$( ".selector" ).dialog( "option", "closeBtnText", "Fermer" );

corners

Тип: Булево
По умолчанию: true
Устанавливает, следует ли рисовать диалог с закругленными углами.

Этот параметр также доступен как атрибут данных:data-corners="false".

Примеры кода:

Инициализируйте диалог с указанным параметром corners:

$( ".selector" ).dialog({
  corners: false
});

Получите или установите параметр corners после инициализации:

// Getter
var corners = $( ".selector" ).dialog( "option", "corners" );
 
// Setter
$( ".selector" ).dialog( "option", "corners", false );

defaults

Тип: Булево
По умолчанию: false
Установка этого параметра в true указывает, что у других параметров виджетов есть значения по умолчанию, и заставляет код автоматической расшифровки виджетов jQuery Mobile пропустить этап, на котором он извлекает значения параметров из атрибутов данных. Это может улучшить время запуска.

Этот параметр также доступен как атрибут данных: data-defaults="true".

Примеры кода:

Инициализируйте диалог с указанным параметром defaults:

$( ".selector" ).dialog({
  defaults: true
});

Получите или установите параметр defaults после инициализации:

// Getter
var defaults = $( ".selector" ).dialog( "option", "defaults" );
 
// Setter
$( ".selector" ).dialog( "option", "defaults", true );

disabled

Тип: Булево
По умолчанию: false
Отключает диалог, если установлено в значение true.

Этот параметр также доступен как атрибут данных: data-disabled="true".

Примеры кода:

Инициализируйте диалог с указанным параметром disabled:

$( ".selector" ).dialog({
  disabled: true
});

Получите или установите параметр disabled после инициализации:

// Getter
var disabled = $( ".selector" ).dialog( "option", "disabled" );
 
// Setter
$( ".selector" ).dialog( "option", "disabled", true );

initSelector

Тип: Селектор
По умолчанию: See below

Значение по умолчанию initSelector для виджета диалога:

":jqmData(role='dialog')"

Примечание: Этот параметр устарел в версии 1.4.0 и будет удален в версии 1.5.0.
С версии jQuery Mobile 1.4.0 параметр initSelector больше не является параметром виджета. Вместо этого он объявлен непосредственно в прототипе виджета. Таким образом, вы можете указать пользовательское значение, обработав событие mobileinit и перезаписав initSelector в прототипе:

$( document ).on( "mobileinit", function() {
  $.mobile.dialog.prototype.initSelector = "div.custom";
});

Примечание: Не забудьте прикрепить обработчик mobileinit после загрузки jQuery, но перед загрузкой jQuery Mobile, потому что событие вызывается в процессе загрузки jQuery Mobile.

Значение этого параметра — строка селектора jQuery. Фреймворк выбирает элементы на основе значения этого параметра и инициализирует виджеты диалога для каждого из полученного списка элементов.

(устаревшая версия: 1.4.0)

overlayTheme

Тип: Строка
По умолчанию: "a"

Диалоги отображаются поверх слоя-обложки. Эта наложение использует цвет контента swatch A по умолчанию, но атрибут данных data-overlay-theme может быть добавлен к обертке страницы для установки наложения на любой цвет swatch.

Возможные значения: буква swatch (a-z)

Этот параметр также доступен как атрибут данных: data-overlay-theme="b".

Примеры кода:

Инициализируйте диалог с указанным параметром overlayTheme:

$( ".selector" ).dialog({
  overlayTheme: "b"
});

Получите или установите параметр overlayTheme после инициализации:

// Getter
var overlayTheme = $( ".selector" ).dialog( "option", "overlayTheme" );
 
// Setter
$( ".selector" ).dialog( "option", "overlayTheme", "b" );

Методы

close()Возвращает: jQuery (только плагин)

Закрывает диалог.
  • Этот метод не принимает аргументов.
Примеры кода:

Вызовите метод close:

$( ".selector" ).dialog( "close" );

События

create( event, ui )Тип: dialogcreate

Вызывается при создании диалога
  • event
    Тип: Событие
  • ui
    Тип: Объект

Примечание: Объект ui пуст, но включен для согласованности с другими событиями.

Примеры кода:

Инициализируйте диалог с указанным обратным вызовом create:

$( ".selector" ).dialog({
  create: function( event, ui ) {}
});

Привяжите обработчик событий к событию dialogcreate:

$( ".selector" ).on( "dialogcreate", function( event, ui ) {} );

Пример:

Базовый пример открытия страницы как диалога, добавив data-rel="dialog" к тегу ссылки.

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>dialog demo</title>
  <link rel="stylesheet" href="//code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.css">
  <script src="//code.jquery.com/jquery-1.10.2.min.js"></script>
  <script src="//code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.js"></script>
</head>
<body>
 
<div data-role="page" id="page1">
  <div data-role="header">
    <h1>jQuery Mobile Example</h1>
  </div>
  <div role="main" class="ui-content">
    <a href="#dialogPage" data-rel="dialog">Open dialog</a>
  </div>
  <div data-role="footer">
    <h2></h2>
  </div>
</div>
 
<div data-role="page" id="dialogPage">
  <div data-role="header">
    <h2>Dialog</h2>
  </div>
  <div role="main" class="ui-content">
    <p>I am a dialog</p>
  </div>
</div>
 
</body>
</html>

Демо:

© The jQuery Foundation and other contributors
Licensed under the MIT License.
https://api.jquerymobile.com/dialog

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API