Spec-Zone.ru › jQuery Mobile

Поп-опережающее виджет

Поп-опережающее виджетверсия добавлена: 1.2

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

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

Параметры

arrow
classes
corners
defaults
disabled
dismissible
history
initSelector
overlayTheme
positionTo
shadow
theme
tolerance
transition

Методы

close
destroy
disable
enable
open
option
reposition

События

afterclose
afteropen
beforeposition
create

Поп-упа

Чтобы создать поп-ап, добавьте атрибут data-role="popup" к div с содержимым поп-апа. Затем создайте ссылку с атрибутом href , установленным на id div поп-апа, и добавьте атрибут data-rel="popup", чтобы сообщить фреймворку об открытии поп-апа при нажатии на ссылку. Это похожая структура разметки, как у виджета dialog. Div поп-апа должен быть вложен внутри той же страницы, что и ссылка.

Тема

Виджет поп-апа использует фреймворк стилей jQuery Mobile CSS framework для определения своего внешнего вида. Если необходима стилизация поп-апа, для переопределения или в качестве ключей для classes опции можно использовать следующие имена CSS-классов:

  • ui-popup-container: Внешний контейнер для виджета списка. Кроме того, класс ui-popup-active будет добавлен, когда поп-ап активен, а классы ui-popup-hidden, ui-popup-truncate будут добавлены, когда поп-ап неактивен.
    • ui-popup: Основной контейнер поп-апа, содержащий всё содержимое.
      • ui-popup-arrow-guide: Указатель стрелки.
      • ui-popup-arrow-container: Контейнер для стрелки поп-апа. Он также будет иметь классы ui-popup-arrow-l, ui-popup-arrow-t, ui-popup-arrow-r, ui-popup-arrow-b соответственно, если стрелка настроена на левую, верхнюю, правую или нижнюю сторону.
        • ui-popup-arrow: Основной элемент стрелки.
<a href="#popupBasic" data-rel="popup">Open Popup</a>
 
<div data-role="popup" id="popupBasic">
  <p>This is a completely basic popup, no options set.</p>
</div>

Это приведет к следующему поп-апу:

Поп-ап состоит из двух элементов: экрана, который представляет собой прозрачный или полупрозрачный элемент, покрывающий всю страницу, и контейнера, который является самим поп-апом. Если у исходного элемента был атрибут id, экран и контейнер получат атрибут id , основанный на нём. Атрибут id экрана будет дополнен "-screen", а атрибут id контейнера будет дополнен "-popup" (в примере выше, id="popupBasic-screen" и id="popupBasic-popup", соответственно).

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

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

Масштабирование изображений: примеры Lightbox

CSS фреймворка содержит правила, которые заставляют изображения, являющиеся непосредственными потомками поп-апа, масштабироваться для соответствия экрану. Из-за абсолютного позиционирования контейнера и экрана поп-апа высота не подстраивается под высоту экрана во всех браузерах. Вы можете предотвратить вертикальную прокрутку с помощью простого скрипта, устанавливающего max-height изображения.

В двух примерах ниже дивы с data-role="popup" имеют класс photopopup.

Обработчик привязывается к событию popupbeforeposition, что гарантирует, что изображение масштабируется не только до показа, но и при изменении размера окна (например, при изменении ориентации). В этом примере высота уменьшена на 60 для учета верхней и нижней погрешности в 30 пикселей.

$( document ).on( "pagecreate", function() {
    $( ".photopopup" ).on({
        popupbeforeposition: function() {
            var maxHeight = $( window ).height() - 60 + "px";
            $( ".photopopup img" ).css( "max-height", maxHeight );
        }
    });
});

Работа с iframe в поп-апах

Вам может потребоваться встроить iframe в поп-ап для использования виджета стороннего разработчика. Здесь мы рассмотрим несколько реальных примеров работы с iframe: видео и карты.

Пример с видео

Вот пример встраивания стороннего видеоплеера в поп-ап:

Разметка представляет собой iframe внутри контейнера поп-апа. У поп-апа будет отступ в 15 пикселей из-за класса ui-content и рамка в один пиксель, потому что фреймворк добавит класс ui-body-a к поп-апу.

<div data-role="popup" id="popupVideo" data-overlay-theme="b" data-theme="a" data-tolerance="15,15" class="ui-content">
 
    <iframe src="http://player.vimeo.com/video/41135183" width="497" height="298" seamless></iframe>
 
</div>

При использовании iframe внутри поп-апа важно изначально установить атрибуты width и height в 0. Это предотвращает проблемы с отображением на платформах, таких как Android 2.3. Обратите внимание, что вам необходимо установить эти атрибуты, так как установка width и height с помощью CSS недостаточно. Вы можете оставить фактические width и height в разметке для браузеров с отключенным JavaScript и использовать attr() для установки нулевых значений при событии pageinit.

Далее привяжитесь к событию popupbeforeposition для установки желаемого размера iframe при показе поп-апа или при изменении размера окна (например, при изменении ориентации). Для примеров iframe на этой странице используется пользовательская функция scale() для масштабирования iframe в соответствии с размерами меньших экранов. Разверните раздел ниже, чтобы просмотреть код этой функции.

scale()

Ширина и высота окна уменьшаются на 30, чтобы учесть отступ в 15 пикселей с каждой стороны.

function scale( width, height, padding, border ) {
    var scrWidth = $( window ).width() - 30,
        scrHeight = $( window ).height() - 30,
        ifrPadding = 2 * padding,
        ifrBorder = 2 * border,
        ifrWidth = width + ifrPadding + ifrBorder,
        ifrHeight = height + ifrPadding + ifrBorder,
        h, w;
 
    if ( ifrWidth < scrWidth && ifrHeight < scrHeight ) {
        w = ifrWidth;
        h = ifrHeight;
    } else if ( ( ifrWidth / scrWidth ) > ( ifrHeight / scrHeight ) ) {
        w = scrWidth;
        h = ( scrWidth / ifrWidth ) * ifrHeight;
    } else {
        h = scrHeight;
        w = ( scrHeight / ifrHeight ) * ifrWidth;
    }
 
    return {
        'width': w - ( ifrPadding + ifrBorder ),
        'height': h - ( ifrPadding + ifrBorder )
    };
};

Примечание: Эта функция не входит в состав фреймворка. Скопируйте код в свой скрипт, чтобы использовать его.

При закрытии поп-апа ширина и высота должны быть установлены обратно в 0. Вы можете сделать это, привязавшись к событию popupafterclose.

Вот полный скрипт и ссылка для открытия поп-апа с видео:

$( document ).on( "pageinit", function() {
    $( "#popupVideo iframe" )
        .attr( "width", 0 )
        .attr( "height", 0 );
 
    $( "#popupVideo" ).on({
        popupbeforeposition: function() {
            var size = scale( 497, 298, 15, 1 ),
                w = size.width,
                h = size.height;
 
            $( "#popupVideo iframe" )
                .attr( "width", w )
                .attr( "height", h );
        },
        popupafterclose: function() {
            $( "#popupVideo iframe" )
                .attr( "width", 0 )
                .attr( "height", 0 );
        }
    });
});

Обратите внимание, что видео всё ещё будет воспроизводиться в iframe при закрытии поп-апа. Если доступно, можно использовать API стороннего разработчика, чтобы остановить видео при событии popupafterclose. Другой способ — создать iframe при открытии поп-апа и уничтожить его при закрытии, но это уменьшит поддержку браузеров с отключённым JavaScript.

Пример с картой

Во втором примере iframe используется для отображения API Google Maps. Использование iframe предотвращает проблемы с элементами управления картой.

Это разметка поп-апа, включая кнопку закрытия справа:

<div data-role="popup" id="popupMap" data-overlay-theme="b" data-theme="b" data-corners="false" data-tolerance="15,15">
 
    <a href="#" data-rel="back" data-role="button" data-theme="b" data-icon="delete" data-iconpos="notext" class="ui-btn-right">Close</a>
 
    <iframe src="map.html" width="480" height="320" seamless></iframe>
 
</div>

Разверните раздел ниже, чтобы просмотреть исходный код iframe.

map.html

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>Map</title>
    <script>
        function initialize() {
            var myLatlng = new google.maps.LatLng( 51.520838, -0.140261 );
            var myOptions = {
                zoom: 15,
                center: myLatlng,
                mapTypeId: google.maps.MapTypeId.ROADMAP
            }
            var map = new google.maps.Map( document.getElementById( "map_canvas" ), myOptions );
        }
    </script>
    <script src="http://maps.google.com/maps/api/js?sensor=false"></script>
    <style>
        html {
            height: 100%;
            overflow: hidden;
        }
        body {
            margin: 0;
            padding: 0;
            height: 100%;
        }
        #map_canvas {
            height: 100%;
        }
    </style>
</head>
<body onload="initialize()">
 
    <div id="map_canvas"></div>
 
</body>
</html>

Установка размера iframe выполняется точно так же, как и для примера с видео, за исключением одного момента. Также следует установить ширину и высоту div, содержащего карту, чтобы предотвратить проблемы с отображением на платформах, таких как Android 2.3. В этом примере ID этого div — #map_canvas.

Вот полный скрипт и ссылка для открытия поп-апа с картой:

$( document ).on( "pageinit", function() {
    $( "#popupMap iframe" )
        .attr( "width", 0 )
        .attr( "height", 0 );
 
    $( "#popupMap iframe" ).contents().find( "#map_canvas" )
        .css( { "width" : 0, "height" : 0 } );
 
    $( "#popupMap" ).on({
        popupbeforeposition: function() {
            var size = scale( 480, 320, 0, 1 ),
                w = size.width,
                h = size.height;
 
            $( "#popupMap iframe" )
                .attr( "width", w )
                .attr( "height", h );
 
            $( "#popupMap iframe" ).contents().find( "#map_canvas" )
                .css( { "width": w, "height" : h } );
        },
        popupafterclose: function() {
            $( "#popupMap iframe" )
                .attr( "width", 0 )
                .attr( "height", 0 );
 
            $( "#popupMap iframe" ).contents().find( "#map_canvas" )
                .css( { "width": 0, "height" : 0 } );
        }
    });
});

Вызов плагина поп-апа

Этот плагин будет автоматически инициализирован на любой странице, содержащей div с атрибутом data-role="popup". Однако, если необходимо, вы можете напрямую вызвать плагин popup на любом селекторе, как любой плагин jQuery, и программно работать с API поп-ап опций, методов и событий:

$( "#myPopupDiv" ).popup();

Открытие поп-апов

При использовании разметки, при нажатии на ссылку с атрибутом data-rel="popup", будет показан соответствующий контейнер поп-апа с id, указанным в href ссылки. Чтобы открыть поп-ап программно, вызовите метод open на контейнере поп-апа:

$( "#myPopupDiv" ).popup( "open" )

Закрытие поп-апов

По умолчанию поп-апы можно закрыть, нажав вне виджета поп-апа или нажав клавишу Esc. Чтобы предотвратить это, добавьте атрибут data-dismissible="false" к поп-апу. Поп-апы также можно закрыть с помощью метода close:

$( "#myPopupDiv" ).popup( "close" )

Чтобы добавить явную кнопку закрытия в поп-ап, добавьте ссылку с ролью кнопки в контейнер поп-апа с атрибутом data-rel="back", которая закроет поп-ап при нажатии. Мы создали вспомогательные классы для позиционирования кнопок в верхнем левом углу (ui-btn-left) или верхнем правом (ui-btn-right) углу поп-апа, но вам может потребоваться настроить их или добавить пользовательские стили позиционирования в зависимости от вашего дизайна. Мы рекомендуем добавить стандартный отступ содержимого в поп-ап, чтобы освободить место для кнопок (см. следующий раздел).

<div data-role="popup">
  <a href="#" data-rel="back" data-role="button" data-theme="a" data-icon="delete" data-iconpos="notext" class="ui-btn-right">Close</a>
  ...popup contents go here...
</div>

Добавление отступа

Для поп-апов с отформатированным текстом необходим отступ. Мы рекомендуем добавить класс ui-content к контейнеру поп-апа, который добавляет стандартный отступ в 1em (16px), как и в контейнере содержимого страницы. Напишите свои стили, чтобы создать более настраиваемый дизайн, если это необходимо.

<a href="#popupPadded" data-rel="popup" data-role="button">Popup with padding</a>
 
<div data-role="popup" id="popupPadded" class="ui-content">
  <p>This is a popup with the <code>ui-content</code> class added to the popup container.</p>
</div>

Это приведет к следующему поп-апу с отступом содержимого:

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

Опции позиционирования

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

В ситуациях, когда поп-ап должен отображаться по центру окна вместо того, чтобы находиться над исходной точкой (например, диалоговое окно или lightbox), добавьте атрибут data-position-to к ссылке и задайте значение window.

Также можно указать любой допустимый селектор в качестве значения для position-to дополнительно к origin и window. Например, если вы добавите data-position-to="#myElement", поп-ап будет позиционирован над элементом с id myElement.

Несколько примеров:

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

  1. Ширина всплывающего окна будет ограничена с помощью CSS max-width шириной окна минус поправочный коэффициент в 15 пикселей с каждой стороны.
  2. При размещении всплывающего окна внутри окна будет соблюдаться поправочный коэффициент от краев окна (15 пикселей с каждой стороны и 30 пикселей сверху и снизу). Высокие всплывающие окна могут выходить за верхний и нижний края окна. Эти части всплывающего окна можно просмотреть, вручную прокрутив документ. Этот поправочный коэффициент можно настроить через параметр tolerance.
  3. Верхняя координата всплывающего окна никогда не будет отрицательной. Это гарантирует, что верхняя часть всплывающего окна не будет обрезана.
  4. Если центрирование всплывающего окна над элементом приведет к увеличению общей высоты документа, всплывающее окно смещается вверх не более чем до тех пор, пока его верхняя координата не станет равной 0.

Также обратите внимание, что всплывающее окно всегда размещается в центре окна после изменения ориентации или события изменения размера окна.

См. методы для получения информации о программной установке позиции всплывающего окна, включая возможность указания координат x и y.

Установка переходов

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

<a href="#transitionExample" data-transition="flip" data-rel="popup">
   Flip transition
</a>

По соображениям производительности на мобильных устройствах рекомендуется использовать более простые переходы, такие как pop, fade или none, для плавных и быстрых анимаций всплывающих окон, особенно с более крупными или сложными виджетами внутри всплывающего окна. Чтобы просмотреть все типы переходов, необходимо использовать браузер, поддерживающий 3D-преобразования. По умолчанию устройства, не поддерживающие 3D (например, Android 2.x), будут использовать «fade» для всех типов переходов. Подробную информацию о системе переходов см. на странице переходов.

При открытии всплывающего окна из любой кнопки будет использоваться значение data-transition для этой кнопки. Однако, если вы открываете всплывающее окно программно, например, через $( "#transitionExample" ).popup( "open" ), будет использоваться атрибут data-transition, указанный в определении всплывающего окна, если он присутствует.

Тема всплывающего окна и наложения

Плагин popup предоставляет два параметра, связанных с темой: data-theme и data-overlay-theme. Параметр data-theme относится к теме самого всплывающего окна, а data-overlay-theme — к теме фона всплывающего окна, который покрывает всё окно позади всплывающего окна.

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

data-overlay-theme никогда не будет установлен, и фон всплывающего окна, хотя всегда присутствует, когда всплывающее окно отображается, будет полностью прозрачным, если явно не задан, например, с помощью data-overlay-theme="b". В этом случае фон будет постепенно затемняться, частично скрывая остальную часть окна, чтобы привлечь внимание к всплывающему окну. Вот пример явно стилизованного всплывающего окна:

<div id="both" data-role="popup" data-theme="b" data-overlay-theme="a" class="ui-content">
  ...Popup contents...
</div>

Стрелки

Расширение widgets/popup.arrow предоставляет параметр arrow, который также доступен как атрибут данных. Например, data-arrow="t,b" приведет к отображению всплывающего окна со стрелкой сверху или снизу.

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

t Система должна расположить всплывающее окно так, чтобы стрелка на верхнем краю всплывающего окна указывала на центр источника.
r Система должна расположить всплывающее окно так, чтобы стрелка на правом краю всплывающего окна указывала на центр источника.
b Система должна расположить всплывающее окно так, чтобы стрелка на нижнем краю всплывающего окна указывала на центр источника.
l Система должна расположить всплывающее окно так, чтобы стрелка на левом краю всплывающего окна указывала на центр источника.

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

  1. расстояние между кончиком стрелки и центром источника, и
  2. приведет ли минимизация этого расстояния к тому, что стрелка окажется слишком близко к одному из углов всплывающего окна вдоль данного края.
Если второе условие выполняется, край отбрасывается как возможный вариант размещения стрелки. В противном случае вычисленное расстояние проверяется. Если оно равно 0, то есть всплывающее окно можно разместить таким образом, чтобы кончик стрелки указывал точно на центр источника, дальнейшие края не проверяются, и всплывающее окно позиционируется вдоль последнего проверенного края. Таким образом, порядок, в котором указаны края, имеет значение.

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

<div data-role="popup" data-arrow="l,t" class="ui-content">
  <h2>Popup with an arrow</h2>
  <p>A second paragraph.</p>
</div>

Примечание: Вложение всплывающих окон запрещено

В настоящее время система не поддерживает вложение всплывающих окон, поэтому невозможно встроить ссылку из одного всплывающего окна в другое. Все ссылки с data-rel="popup" внутри всплывающего окна не будут выполнять никаких действий.

Это также означает, что пользовательские списки выбора не будут работать внутри всплывающих окон, так как они сами реализованы с использованием всплывающих окон. Если вы разместите список выбора внутри всплывающего окна, он будет отображаться как обычный список выбора, даже если вы укажете data-native-menu="false".

Обходной путь для работы вложенных всплывающих окон — использование таймаута, например, в событии popupafterclose, привязанном к вызывающему всплывающему окну. В приведенном ниже примере, когда первое всплывающее окно закрывается, второе будет открыто с помощью отложенного вызова метода open:

$( document ).on( "pageinit", function() {
    $( ".popupParent" ).on({
        popupafterclose: function() {
            setTimeout(function() { $( ".popupChild" ).popup( "open" ) }, 100 );
        }
    });
});

Предоставление предварительно отрисованной разметки

Вы можете улучшить время загрузки страницы, предоставив разметку, которую виджет всплывающего окна обычно создаёт во время инициализации.

Предоставив эту разметку самостоятельно и указав это, установив атрибут data-enhanced="true", вы указываете виджету всплывающего окна пропустить эти манипуляции с DOM во время создания экземпляра и предположить, что необходимая структура DOM уже присутствует.

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

Виджет всплывающего окна перемещает элемент, на котором он инициализирован, так, чтобы он стал последним дочерним элементом страницы div или, если элемент не находится внутри страницы, он станет последним дочерним элементом body. Затем он обертывает элемент в контейнер div, и добавляет созданный элемент, служащий экраном модального наложения, в родительский элемент контейнера.

В примере ниже содержится вся страница jQuery Mobile, а не только всплывающее окно. Это помогает проиллюстрировать, где необходимо разместить разметку для виджета предварительно отрисованного всплывающего окна относительно страницы jQuery Mobile, на которой она должна отображаться. В примере всплывающее окно имеет атрибут data-overlay-theme="b" для отражения того, что экран модального наложения имеет связанную тему.

<div data-role="page">
  <div data-role="header">
    <h1>Example Page</h1>
  </div>
  <div role="main" class="ui-content">
    <a href="#pre-rendered" data-rel="popup" class="ui-btn ui-corner-all ui-shadow ui-btn-inline">Open pre-rendered popup</a>
  </div>
  <!-- the following two divs represent the pre-rendered popup widget -->
  <div class="ui-popup-screen ui-overlay-b ui-screen-hidden"></div>
  <div class="ui-popup-container ui-popup-hidden ui-popup-truncate" id="pre-rendered-popup">
    <div class="ui-popup ui-body-inherit ui-overlay-shadow ui-corner-all" id="pre-rendered" data-role="popup" data-enhanced="true" data-overlay-theme="b">
      <p>Pre-rendered popup</p>
    </div>
  </div>
</div>

Генерация ID

Виджет всплывающего окна добавляет идентификатор к генерируемым элементам. ID любого сгенерированного элемента создается путем добавления суффикса к собственному ID всплывающего окна:

Заполнитель
<popup-id>-placeholder
Экран
<popup-id>-screen
Контейнер
<popup-id>-popup

Например, создание всплывающего окна с

<div id="extra-info" data-role="popup">
  <p>To use this feature, enable it from Settings.</p>
</div>

приведет к следующей разметке:

<div id="extra-info-placeholder" style="display: none;">
  <!-- placeholder for extra-info -->
</div>
<div id="extra-info-screen" class="ui-screen-hidden ui-popup-screen ui-overlay-inherit"></div>
<div id="extra-info-popup" class="ui-popup-container ui-popup-hidden ui-popup-truncate">
  <div id="extra-info" data-role="popup" class="ui-popup ui-body-inherit ui-overlay-shadow ui-corner-all">
    <p>To use this feature, enable it from Settings.</p>
  </div>
</div>

Параметры

arrow

Type: String or Boolean
Default: ""
Указывает, следует ли рисовать всплывающее окно со стрелкой.

Этот параметр предоставляется расширением widgets/popup.arrow.

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

Допустимы следующие значения: true, false или строка, содержащая разделенный запятыми список букв "l", "t", "r" и "b". Список может быть пустым, в этом случае он соответствует значению false. Значение true соответствует списку "l,t,r,b". Этот список указывает, вдоль каких краев код должен пытаться разместить стрелку. Код пытается разместить стрелку вдоль каждой кромки, указанной в списке, в порядке слева направо, указанном в списке, пока одно такое размещение не приведет к тому, что стрелка будет указывать точно на нужные координаты. Если стрелки отобразить невозможно, всплывающее окно позиционируется так, как будто значение этого параметра было false.

Поддерживается несколько типов:
  • String: Разделенный запятыми список букв "l", "t", "r" и "b".
  • Boolean: Значение true эквивалентно значению "t,r,b,l", тогда как false указывает, что стрелку отображать не нужно.
Примеры кода:

Инициализация всплывающего окна с указанным параметром arrow:

$( ".selector" ).popup({
  arrow: "l,t,r,b"
});

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

// Getter
var arrow = $( ".selector" ).popup( "option", "arrow" );
 
// Setter
$( ".selector" ).popup( "option", "arrow", "l,t,r,b" );

classes

Type: Object
Default:
{
        "ui-popup": "ui-corner-all ui-overlay-shadow",
                "ui-popup-arrow": "ui-overlay-shadow"
      }

Указывает дополнительные классы для добавления к элементам виджета. Любой из классов, указанных в разделе Тема, может использоваться в качестве ключей для переопределения их значения. Чтобы узнать больше об этом параметре, ознакомьтесь со статьей статьей о параметре classes.

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

Инициализация всплывающего окна с указанным параметром classes, изменяющим тему для класса ui-popup:

$( ".selector" ).popup({
  classes: {
    "ui-popup": "highlight"
  }
});

Получение или установка свойства параметра classes, после инициализации, здесь чтение и изменение темы для класса ui-popup:

// Getter
var themeClass = $( ".selector" ).popup( "option", "classes.ui-popup" );
 
// Setter
$( ".selector" ).popup( "option", "classes.ui-popup", "highlight" );

corners

Type: Boolean
Default: true

Указывает, следует ли рисовать всплывающее окно со скругленными углами.

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

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

Инициализация всплывающего окна с указанным параметром corners:

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

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

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

defaults

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

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

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

Инициализация всплывающего окна с указанным параметром defaults:

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

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

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

disabled

Type: Boolean
Default: false
Отключает всплывающее окно, если установлено в true.

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

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

Инициализация всплывающего окна с указанным параметром disabled:

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

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

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

dismissible

Type: Boolean
Default: true

Указывает, будет ли закрываться всплывающее окно при щелчке за его пределами или при нажатии клавиши Escape, когда всплывающее окно открыто.

Примечание: Когда включена поддержка истории, нажатие кнопки "Назад" браузера закроет всплывающее окно, даже если этот параметр установлен в false.

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

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

Инициализация всплывающего окна с указанным параметром dismissible:

$( ".selector" ).popup({
  dismissible: false
});

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

// Getter
var dismissible = $( ".selector" ).popup( "option", "dismissible" );
 
// Setter
$( ".selector" ).popup( "option", "dismissible", false );

history

Type: Boolean
Default: true

Указывает, следует ли изменять URL-адрес, когда всплывающее окно открыто, для поддержки кнопки "Назад".

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

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

Инициализация всплывающего окна с указанным параметром history:

$( ".selector" ).popup({
  history: false
});

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

// Getter
var history = $( ".selector" ).popup( "option", "history" );
 
// Setter
$( ".selector" ).popup( "option", "history", false );

initSelector

Type: Selector
Default: See below

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

":jqmData(role='popup')"

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

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

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

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

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

overlayTheme

Type: String
Default: null

Устанавливает цветовую схему (палитру) для фона всплывающего окна, который покрывает всё окно. Если не указано явно, фон будет прозрачным.

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

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

Инициализация всплывающего окна с указанным параметром overlayTheme:

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

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

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

positionTo

Type: String
Default: "origin"

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

"origin" При открытии всплывающего окна, центрируется над координатами, переданными в вызов open() (см. подробности об этом методе).
"window" При открытии всплывающего окна, центрируется в окне.
jQuery selector При открытии всплывающего окна, создается объект jQuery на основе селектора и центрируется над ним. Селектор фильтруется на видимые элементы с помощью ":visible". Если результат пуст, всплывающее окно будет центрироваться в окне.

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

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

Инициализация всплывающего окна с указанным параметром positionTo:

$( ".selector" ).popup({
  positionTo: "window"
});

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

// Getter
var positionTo = $( ".selector" ).popup( "option", "positionTo" );
 
// Setter
$( ".selector" ).popup( "option", "positionTo", "window" );

shadow

Type: Boolean
Default: true

Указывает, следует ли рисовать тень вокруг всплывающего окна.

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

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

Инициализация всплывающего окна с указанным параметром shadow:

$( ".selector" ).popup({
  shadow: false
});

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

// Getter
var shadow = $( ".selector" ).popup( "option", "shadow" );
 
// Setter
$( ".selector" ).popup( "option", "shadow", false );

Тема

Тип: Строка
По умолчанию: null, inherited from parent
Устанавливает цветовую схему (палитру) для содержимого всплывающего окна. Если явно не задано значение 'none', тема всплывающего окна будет назначена при первом его отображении, унаследовав тему страницы, или, если это не удастся, присвоив значение 'a'. Если вы установите значение 'none', всплывающее окно не будет иметь темы и будет прозрачным.

Возможные значения: буква палитры (a-z) или "none".

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

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

Инициализируйте всплывающее окно с указанным параметром theme:

$( ".selector" ).popup({
  theme: "b"
});

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

// Getter
var theme = $( ".selector" ).popup( "option", "theme" );
 
// Setter
$( ".selector" ).popup( "option", "theme", "b" );

Погрешность

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

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

Вы можете указать значение для этого параметра четырьмя способами:

  1. Пустая строка, null или другое ложное значение. Это приведет к возврату всплывающего окна к значениям по умолчанию, указанным выше.
  2. Одно число. Это число будет использоваться для всех четырёх порогов.
  3. Два числа, разделенных запятой. Первое число будет использоваться для порогов с верхнего и нижнего краёв окна, а второе — для порогов с левого и правого краёв окна.
  4. Четыре числа, разделенные запятыми. Первое будет использоваться для порога с верхнего края, второе — для порога с правого края, третье — для порога с нижнего края, а четвёртое — для порога с левого края.
Примеры кода:

Инициализируйте всплывающее окно с указанным параметром tolerance:

$( ".selector" ).popup({
  tolerance: "0,0"
});

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

// Getter
var tolerance = $( ".selector" ).popup( "option", "tolerance" );
 
// Setter
$( ".selector" ).popup( "option", "tolerance", "0,0" );

Переход

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

Устанавливает стандартный переход для всплывающего окна. Значение по умолчанию не приведет к переходу.

Если всплывающее окно открывается из ссылки, и у ссылки установлен атрибут data-transition, указанное в нём значение переопределит значение этого параметра в момент открытия всплывающего окна из ссылки.

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

Инициализируйте всплывающее окно с указанным параметром transition:

$( ".selector" ).popup({
  transition: "pop"
});

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

// Getter
var transition = $( ".selector" ).popup( "option", "transition" );
 
// Setter
$( ".selector" ).popup( "option", "transition", "pop" );

Методы

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

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

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

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

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

Полностью удаляет функциональность всплывающего окна. Это вернёт элемент в состояние до инициализации.
  • Этот метод не принимает никаких аргументов.
Примеры кода:

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

$( ".selector" ).popup( "destroy" );

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

Деактивирует всплывающее окно.
  • Этот метод не принимает никаких аргументов.
Примеры кода:

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

$( ".selector" ).popup( "disable" );

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

Активирует всплывающее окно.
  • Этот метод не принимает никаких аргументов.
Примеры кода:

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

$( ".selector" ).popup( "enable" );

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

Отображает всплывающее окно с использованием указанных параметров.

Если параметры x или y отсутствуют, и никакой селектор jQuery не задан как значение параметра positionTo, центр окна будет использован.

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

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

  • options
    Тип: Объект
    • x (по умолчанию: )
      Тип: Строка
      Координата x, где будет отображено всплывающее окно.
    • y (по умолчанию: )
      Тип: Строка
      Координата y, где будет отображено всплывающее окно.
    • transition (по умолчанию: )
      Тип: Строка
      Переход, используемый во время открытия.
    • positionTo (по умолчанию: )
      Тип: Строка
      Используемое позиционирование.
Примеры кода:

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

$( ".selector" ).popup( "open", options );

option( optionName )Возвращает: Объект

Получает значение, текущее для указанного optionName.
  • optionName
    Тип: Строка
    Имя параметра для получения.
Примеры кода:

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

var isDisabled = $( ".selector" ).popup( "option", "disabled" );

option()Возвращает: Объект

Получает объект, содержащий пары ключ/значение, представляющие текущий хэш параметров всплывающего окна.
  • Этот метод не принимает аргументов.
Примеры кода:

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

var options = $( ".selector" ).popup( "option" );

option( optionName, value )Возвращает: jQuery (только для плагинов)

Устанавливает значение параметра всплывающего окна, соответствующего указанному optionName.
  • optionName
    Тип: Строка
    Имя параметра для установки.
  • value
    Тип: Объект
    Значение для установки параметра.
Примеры кода:

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

$( ".selector" ).popup( "option", "disabled", true );

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

Устанавливает один или несколько параметров всплывающего окна.
  • options
    Тип: Объект
    Карта пар параметр-значение для установки.
Примеры кода:

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

$( ".selector" ).popup( "option", { disabled: true } );

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

Изменяет положение всплывающего окна на экране. См. метод open() для описания ключей, распознаваемых из объекта options.
  • options
    Тип: Объект
    • x (по умолчанию: )
      Тип: Целое число
      Координата x, где должно быть отображено всплывающее окно.
    • y (по умолчанию: )
      Тип: Целое число
      Координата y, где должно быть отображено всплывающее окно.
    • positionTo (по умолчанию: "origin")
      Тип: Строка
      Используемое позиционирование.
Примеры кода:

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

$( ".selector" ).popup( "reposition", options );

События

afterclose( event )Тип: popupafterclose

Срабатывает, когда всплывающее окно полностью закрыто

Это событие срабатывает, когда всплывающее окно полностью исчезает с экрана, что означает завершение всех связанных анимаций.

  • event
    Тип: Event

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

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

Инициализируйте всплывающее окно с указанным обратным вызовом afterclose:

$( ".selector" ).popup({
  afterclose: function( event, ui ) {}
});

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

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

afteropen( event )Тип: popupafteropen

Срабатывает после того, как всплывающее окно полностью открылось

Это событие срабатывает, когда всплывающее окно полностью появляется на экране, что означает завершение всех связанных анимаций.

  • event
    Тип: Event

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

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

Инициализируйте всплывающее окно с указанным обратным вызовом afteropen:

$( ".selector" ).popup({
  afteropen: function( event, ui ) {}
});

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

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

beforeposition( event, ui )Тип: popupbeforeposition

Срабатывает перед тем, как всплывающее окно вычислит координаты своего появления

Это событие срабатывает, когда всплывающее окно завершило подготовку к появлению на экране, при изменении размера документа, когда всплывающее окно нужно переместить в другое место, или когда вызывается метод reposition(). На этом этапе всплывающее окно еще не начало анимацию открытия и еще не вычислило координаты своего появления на экране. Обработка этого события предоставляет возможность изменить содержимое всплывающего окна до его появления на экране. Например, содержимое можно масштабировать, или части его можно скрыть или удалить, если оно слишком широкое или высокое. Вы также можете изменить параметр options, чтобы повлиять на расположение всплывающего окна. Свойства внутри объекта options доступны для изменения и совпадают с теми, которые используются методом reposition.

  • event
    Тип: Event
  • ui
    Тип: Объект

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

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

Инициализируйте всплывающее окно с указанным обратным вызовом beforeposition:

$( ".selector" ).popup({
  beforeposition: function( event, ui ) {}
});

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

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

create( event, ui )Тип: popupcreate

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

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

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

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

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

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

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

Пример:

Базовый пример всплывающего окна.

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>popup 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="#popupBasic" data-rel="popup">Open Popup</a>
    <div data-role="popup" id="popupBasic">
      <p>This is a completely basic popup, no options set.</p>
    </div>
  </div>
</div>
 
</body>
</html>

Демо:

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

Spec-Zone.ru

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