Список виджетверсия добавлена: 1.0
Описание: Создаёт виджет списка
Описание: Создаёт виджет списка
Список с отображением элементов кодируется как простой неупорядоченный список, содержащий элементы списка с ссылкой с атрибутом data-role="listview". jQuery Mobile применит все необходимые стили для преобразования списка в удобный для мобильных устройств список с индикатором стрелки вправо, занимающий всю ширину окна браузера. При нажатии на элемент списка фреймворк запустит клик по первой ссылке внутри элемента списка, отправит запрос Ajax для URL в ссылке, создаст новую страницу в DOM, а затем инициирует переход к странице. Посмотрите ссылку на атрибуты данных, чтобы увидеть все возможные атрибуты, которые можно добавить в списки с отображением элементов.
Вот разметка HTML для простого списка с ссылками.
<ul data-role="listview"> <li><a href="acura.html">Acura</a></li> <li><a href="audi.html">Audi</a></li> <li><a href="bmw.html">BMW</a></li> </ul>
Виджет списка с отображением элементов использует фреймворк CSS jQuery Mobile для стилизации своего внешнего вида. Если нужны специфические стили для списка с отображением элементов, следующие имена CSS-классов могут использоваться для перезаписи или в качестве ключей для classes параметра:
ui-listview: Внешний контейнер для виджета списка с отображением элементов ui-listview-item-static: Простейший элемент списка списка с отображением элементов, когда внутри элемента нет вложенных тегов ui-listview-item-divider: Элемент списка, являющийся разделителем ui-listview-item-has-alternate: Элемент списка, содержащий более одного тега ui-listview-item: Элемент списка, содержащий только один элемент . Если элемент списка с отображением элементов имеет числовой индикатор, он дополнительно будет иметь класс ui-listview-item-has-count. ui-listview-item-button: Элемент элемента списка ui-listview-item-icon: Иконка для элемента списка ui-listview-item-count-bubble: Числовой индикатор для элемента списка, если присутствует Примечание о списках без отступов: все стандартные списки без отступов имеют отступ -1em (16px) для компенсации отступа 1em в области содержимого, чтобы списки простирались до краев экрана. Если вы добавляете другие виджеты над или под списком, отрицательный отступ может привести к наложению этих элементов, поэтому вам потребуется добавить дополнительное пространство в вашем пользовательском CSS.
Списки также могут быть созданы из упорядоченных списков (ol), что полезно при представлении элементов в последовательности, таких как результаты поиска или очередь фильмов. При применении расширенной разметки к списку с отображением элементов jQuery Mobile попытается сначала использовать CSS для добавления номеров в список, а в случае отсутствия поддержки вернётся к вставке номеров с помощью JavaScript.
Списки с отображением элементов также могут использоваться для отображения неинтерактивного списка элементов, обычно как вложенный список. Этот список создаётся из неупорядоченного или упорядоченного списка, не содержащего элементов списка с ссылкой. Фреймворк стилизует статические элементы списка идентично элементам списка, содержащим ссылки, но статические элементы получают цвет фона тела (ui-body-a) вместо цвета фона кнопки (ui-btn-a).
В случаях, когда на каждый элемент списка приходится более одного возможного действия, можно использовать разделенную кнопку, чтобы предложить два независимо нажимаемых элемента — элемент списка и небольшую стрелку-иконку в правой части. Чтобы создать элемент списка с разделенной кнопкой, просто добавьте вторую ссылку в li и фреймворк добавит вертикальную разделительную линию, стилизует ссылку как кнопку-стрелку только с иконкой и установит атрибут title ссылки на текст ссылки для удобства использования.
Иконку правой иконки-разделителя можно задать, указав атрибут data-split-icon в списке с отображением элементов с именем иконки иконки, которую вы хотите. По умолчанию используется иконка "carat-r", но ее можно настроить с помощью splitIcon параметра списка с отображением элементов. Добавив атрибут data-icon к элементу списка, можно задать индивидуальные иконки для каждого разделителя. Цвет темы цветовой палитры разделенной кнопки по умолчанию равен "b" (синий в теме по умолчанию), но его можно задать, указав букву цветовой палитры с атрибутом data-split-theme на уровне списка с отображением элементов или для отдельных разделенных кнопок с атрибутом data-theme на уровне ссылки.
Элементы списка можно преобразовать в разделители для организации и группирования элементов списка. Это делается путем добавления data-role="list-divider" к любому элементу списка. Эти элементы по умолчанию стилизованы с использованием цветовой палитры разделителей "b" (синий в теме по умолчанию), но вы можете указать тему для разделителей, добавив атрибут data-divider-theme к элементу списка (ul или ol) и указав букву цветовой палитры темы.
Список с отображением элементов можно настроить на автоматическое создание разделителей для его элементов. Это делается путем добавления атрибута data-autodividers="true" к любому списку с отображением элементов.
По умолчанию текст, используемый для создания разделителей, — это заглавная первая буква текста элемента. В качестве альтернативы вы можете указать текст разделителя, задав параметр autodividersSelector для списка с отображением элементов программно. Например, чтобы добавить пользовательский селектор к элементу с id="mylistview":
$( "#mylistview" ).listview({
autodividers: true,
// the selector function is passed a <li> element from the listview;
// it should return the appropriate divider text for that <li>
// element as a string
autodividersSelector: function ( li ) {
var out = /* generate a string based on the content of li */;
return out;
}
}); Обратите внимание, что если вы используете отформатированные элементы списка, содержащие плавающий элемент (например, ui-li-aside), этот элемент предшествует своим следующим элементам независимо от порядка в вашей разметке HTML. Это приводит к тому, что первая буква плавающего элемента используется в качестве текста разделителя. Поэтому рекомендуется указать текст разделителя в этом случае.
Если к списку добавляются или удаляются новые элементы списка, разделители не обновляются автоматически: вам следует вызвать refresh() для списка с отображением элементов, чтобы перерисовать авторазделители.
Расширение списка с отображением элементов hidedividers предоставляет параметр hideDividers. При установке в значение true и вызове .listview( "refresh" ) после скрытия элемента списка путем добавления класса ui-screen-hidden к нему расширение скроет те разделители, за которыми сразу следует другой разделитель.
Начиная с jQuery Mobile 1.4.0, эта функциональность была перенесена в виджет filterable, который предлагает более общее решение.
Примечание: Функции, такие как автоматическое создание текстового поля ввода и специальная обработка разделителей списка с отображением элементов, устарели начиная с версии 1.4.0. В документации для filterable описан путь миграции для списков с отображением элементов.
Функция фильтра отображения позволяет легко создать простую автозамену с локальными данными. Когда у списка с отображением элементов есть атрибут data-filter-reveal="true", все элементы списка с отображением элементов будут автоматически скрываться, когда поле поиска пустое. Атрибут data-filter-placeholder можно добавить для задания текста подсказки для фильтра. Если вам нужно выполнить поиск по большому списку значений, мы предоставляем способ создания фильтра с удалённым источником данных.
Чтобы использовать фильтр в качестве автозаполнения, обращаясь к удалённым источникам данных, вы можете использовать событие filterablebeforefilter для динамической загрузки списка с отображением элементов по мере ввода пользователем запроса поиска. Это полезно, когда у вас очень большой набор данных, таких как города, почтовые индексы или продукты, которые не могут быть загружены заранее локально. Используйте кнопку просмотра исходного кода, чтобы увидеть JavaScript, который питает эту демонстрацию.
Если у вас небольшой список элементов, вы можете использовать опцию списка с отображением элементов filter reveal для создания автозаполнения с локальными данными списка с отображением элементов.
После ввода как минимум трех символов функция автозаполнения отобразит все возможные совпадения.
Фреймворк включает в себя соглашения о форматировании текста для общих шаблонов списков, таких как заголовок/описание, дополнительная информация и счётчики с помощью семантической разметки HTML.
ui-li-count ui-li-aside Чтобы добавить миниатюры слева от элемента списка, просто добавьте изображение внутри элемента списка в качестве первого дочернего элемента. Фреймворк изменит масштаб изображения до 80 пикселей квадрат. Чтобы использовать стандартные значки 16x16 пикселей в элементах списка, добавьте класс ui-li-icon к элементу изображения.
Если списки встроены в страницу с другими типами содержимого, вложенный список упаковывает список в блок, который находится внутри области содержимого с небольшим отступом и закругленными углами (управляемыми темой). Добавление атрибута data-inset="true" к списку (ul или ol) применяет внешний вид вложенного списка.
Вы можете напрямую вызвать плагин списка с отображением элементов на любом селекторе, как любой плагин jQuery:
$( "#mylist" ).listview();
Если вы добавляете элементы в список с отображением элементов, вам нужно вызвать метод refresh() для него, чтобы обновить стили. Например:
$( "#mylist" ).listview( "refresh" );
Обратите внимание, что метод refresh() влияет только на новые узлы, добавленные в список. Это сделано для повышения производительности. Любые элементы списка, уже улучшенные, будут проигнорированы процессом обновления. Это означает, что если вы измените содержимое или атрибуты уже улучшенного элемента списка, эти изменения не будут отражены. Если вы хотите обновить элемент списка, замените его новым разметкой перед вызовом обновления.
Если вы хотите изначально скрыть элемент списка, вы можете добавить класс ui-screen-hidden к элементу li. Использование этого класса гарантирует правильное применение стилей углов, а также нижней границы последнего видимого элемента.
false listview.autodividers. При значении true разделители автоматически создаются для элементов списка.
Функция, хранящаяся в значении параметра autodividersSelector, управляет текстом, отображаемым на разделителях.
Этот параметр также доступен как атрибут данных: data-autodividers="true".
n/a listview.autodividers. Значение этого параметра — функция, которая возвращает строку. Она получает объект jQuery collection, содержащий элемент. Она вычисляет возвращаемую строку из элемента. Функция вызывается для каждого элемента списка последовательно, и разделитель создается всякий раз, когда функция возвращает значение для элемента списка, отличное от значения, которое она вернула для предыдущего элемента списка.
Функция может возвращать null для данного элемента списка. В этом случае новый разделитель не создается, даже если значение, возвращенное для предыдущего элемента списка, было чем-то отличным от null.
Значение по умолчанию для этого параметра — функция, которая возвращает заглавную первую букву текста элемента списка:
function defaultAutodividersSelector( elt ) {
// look for the text in the given element
var text = $.trim( elt.text() ) || null;
if ( !text ) {
return null;
}
// create the text for the divider (first uppercased letter)
text = text.slice( 0, 1 ).toUpperCase();
return text;
} {
"ui-listview-inset": "ui-corner-all ui-shadow"
} Укажите дополнительные классы для добавления к элементам виджета. Любые из классов, указанные в разделе Тема оформления, могут использоваться в качестве ключей для изменения их значения. Чтобы узнать больше об этом параметре, ознакомьтесь со статьей статьей о параметре classes.
Инициализируйте listview с указанным параметром classes, изменив тему оформления для класса ui-listview:
$( ".selector" ).listview({
classes: {
"ui-listview": "highlight"
}
}); Получите или установите свойство параметра classes, после инициализации, здесь чтение и изменение темы оформления для класса ui-listview:
// Getter var themeClass = $( ".selector" ).listview( "option", "classes.ui-listview" ); // Setter $( ".selector" ).listview( "option", "classes.ui-listview", "highlight" );
null, inherited from parent Устанавливает цветовую схему (образец) для всплывающего окна с количеством элементов списка. Он принимает одну букву от a до z, которая сопоставляется с образцами, включенными в вашу тему.
Возможные значения: буква образца (a-z).
Этот параметр также доступен как атрибут данных: data-count-theme="b".
Инициализируйте listview с указанным параметром countTheme:
$( ".selector" ).listview({
countTheme: "b"
}); Получите или установите параметр countTheme, после инициализации:
// Getter var countTheme = $( ".selector" ).listview( "option", "countTheme" ); // Setter $( ".selector" ).listview( "option", "countTheme", "b" );
false true указывает на то, что другие параметры виджетов имеют значения по умолчанию и заставляет код автоматического улучшения виджетов jQuery Mobile пропускать шаг, на котором он извлекает значения параметров из атрибутов данных. Это может улучшить время запуска. Этот параметр также доступен как атрибут данных: data-defaults="true".
Инициализируйте listview с указанным параметром defaults:
$( ".selector" ).listview({
defaults: true
}); Получите или установите параметр defaults, после инициализации:
// Getter var defaults = $( ".selector" ).listview( "option", "defaults" ); // Setter $( ".selector" ).listview( "option", "defaults", true );
false true. Этот параметр также доступен как атрибут данных: data-disabled="true".
Инициализируйте listview с указанным параметром disabled:
$( ".selector" ).listview({
disabled: true
}); Получите или установите параметр disabled, после инициализации:
// Getter var disabled = $( ".selector" ).listview( "option", "disabled" ); // Setter $( ".selector" ).listview( "option", "disabled", true );
null, inherited from parent Этот параметр также доступен как атрибут данных: data-divider-theme="b".
Инициализируйте listview с указанным параметром dividerTheme:
$( ".selector" ).listview({
dividerTheme: "b"
}); Получите или установите параметр dividerTheme, после инициализации:
// Getter var dividerTheme = $( ".selector" ).listview( "option", "dividerTheme" ); // Setter $( ".selector" ).listview( "option", "dividerTheme", "b" );
false initSelector для виджета filterable. Добавляет панель фильтра поиска в listviews.
Этот параметр также доступен как атрибут данных: data-filter="true".
Инициализируйте listview с указанным параметром filter:
$( ".selector" ).listview({
filter: true
}); Получите или установите параметр filter, после инициализации:
// Getter var filter = $( ".selector" ).listview( "option", "filter" ); // Setter $( ".selector" ).listview( "option", "filter", true );
n/a Функция для определения, какие строки скрывать, когда изменяется текстовое поле фильтра поиска. Функция принимает два аргумента — текст элемента списка (или значение data-filtertext, если оно присутствует) и строку поиска. Верните true, чтобы скрыть элемент, false, чтобы оставить его видимым.
$( document ).on( "mobileinit", function() {
$.mobile.listview.prototype.options.filterCallback = function( text, searchValue ) {
// only show items that *begin* with the search string
return text.toLowerCase().substring( 0, searchValue.length ) !== searchValue;
};
}); (устаревшая версия: 1.4.0) "Filter items..." Текст заполнителя, используемый в панелях фильтра поиска.
Этот параметр также доступен как атрибут данных: data-filter-placeholder="Search...".
Инициализируйте listview с указанным параметром filterPlaceholder:
$( ".selector" ).listview({
filterPlaceholder: "Search..."
}); Получите или установите параметр filterPlaceholder, после инициализации:
// Getter var filterPlaceholder = $( ".selector" ).listview( "option", "filterPlaceholder" ); // Setter $( ".selector" ).listview( "option", "filterPlaceholder", "Search..." );
false Когда true, и строка ввода поиска пуста, все элементы скрыты, а не показаны.
Этот параметр также доступен как атрибут данных: data-filter-reveal="true".
Инициализируйте listview с указанным параметром filterReveal:
$( ".selector" ).listview({
filterReveal: true
}); Получите или установите параметр filterReveal, после инициализации:
// Getter var filterReveal = $( ".selector" ).listview( "option", "filterReveal" ); // Setter $( ".selector" ).listview( "option", "filterReveal", true );
null, inherited from parent Устанавливает цветовую схему (образец) для панели фильтра поиска. Он принимает одну букву от a до z, которая сопоставляется с одним из образцов, включенных в вашу тему.
Этот параметр также доступен как атрибут данных: data-filter-theme="a".
Инициализируйте listview с указанным параметром filterTheme:
$( ".selector" ).listview({
filterTheme: "b"
}); Получите или установите параметр filterTheme, после инициализации:
// Getter var filterTheme = $( ".selector" ).listview( "option", "filterTheme" ); // Setter $( ".selector" ).listview( "option", "filterTheme", "b" );
false listview.hidedividers. При установке на true и скрытии всех элементов списка, находящихся под данным разделителем, сам разделитель также скрывается.
Этот параметр также доступен как атрибут данных: data-hide-dividers="true".
Инициализируйте listview с указанным параметром hideDividers:
$( ".selector" ).listview({
hideDividers: true
}); Получите или установите параметр hideDividers, после инициализации:
// Getter var hideDividers = $( ".selector" ).listview( "option", "hideDividers" ); // Setter $( ".selector" ).listview( "option", "hideDividers", true );
"carat-r" Этот параметр также доступен как атрибут данных: data-icon="star".
Инициализация списка с параметром icon:
$( ".selector" ).listview({
icon: "star"
}); Получение или установка параметра icon после инициализации:
// Getter var icon = $( ".selector" ).listview( "option", "icon" ); // Setter $( ".selector" ).listview( "option", "icon", "star" );
See below По умолчанию initSelector для виджета списка:
":jqmData(role='listview')"
Примечание: Этот параметр устарел в версии 1.4.0 и будет удален в версии 1.5.0.
Начиная с jQuery Mobile 1.4.0, initSelector больше не является параметром виджета. Вместо этого он объявлен непосредственно в прототипе виджета. Таким образом, вы можете указать пользовательское значение, обработав событие mobileinit и перезаписав initSelector в прототипе:
$( document ).on( "mobileinit", function() {
$.mobile.listview.prototype.initSelector = "div.custom";
}); Примечание: Не забудьте прикрепить обработчик mobileinit после загрузки jQuery, но перед загрузкой jQuery Mobile, так как событие срабатывает во время загрузки jQuery Mobile.
Значение этого параметра — строка селектора jQuery. Фреймворк выбирает элементы на основе значения этого параметра и инициализирует виджеты списка на каждом из полученных элементов.
(версия устарела: 1.4.0)false Этот параметр также доступен как атрибут данных: data-inset="true".
Инициализация списка с параметром inset:
$( ".selector" ).listview({
inset: true
}); Получение или установка параметра inset после инициализации:
// Getter var inset = $( ".selector" ).listview( "option", "inset" ); // Setter $( ".selector" ).listview( "option", "inset", true );
"carat-r" Этот параметр также доступен как атрибут данных: data-split-icon="star".
Инициализация списка с параметром splitIcon:
$( ".selector" ).listview({
splitIcon: "star"
}); Получение или установка параметра splitIcon после инициализации:
// Getter var splitIcon = $( ".selector" ).listview( "option", "splitIcon" ); // Setter $( ".selector" ).listview( "option", "splitIcon", "star" );
null, inherited from parent Этот параметр также доступен как атрибут данных: data-split-theme="b".
Инициализация списка с параметром splitTheme:
$( ".selector" ).listview({
splitTheme: "b"
}); Получение или установка параметра splitTheme после инициализации:
// Getter var splitTheme = $( ".selector" ).listview( "option", "splitTheme" ); // Setter $( ".selector" ).listview( "option", "splitTheme", "b" );
null, inherited from parent Возможные значения: буква палитры (a-z).
Этот параметр также доступен как атрибут данных: data-theme="b".
Инициализация списка с параметром theme:
$( ".selector" ).listview({
theme: "b"
}); Получение или установка параметра theme после инициализации:
// Getter var theme = $( ".selector" ).listview( "option", "theme" ); // Setter $( ".selector" ).listview( "option", "theme", "b" );
Если вы изменяете список через JavaScript (например, добавляете новые элементы LI), вы должны вызвать метод refresh для его обновления.
Вызов метода refresh:
$( ".selector" ).listview( "refresh" );
listviewcreate Примечание: Объект ui пустой, но включён для согласованности с другими событиями.
Инициализация списка с обработчиком создания:
$( ".selector" ).listview({
create: function( event, ui ) {}
}); Привязка обработчика события к событию listviewcreate:
$( ".selector" ).on( "listviewcreate", function( event, ui ) {} ); Базовый пример списка
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>listview 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">
<ul data-role="listview">
<li><a href="index.html">Acura</a></li>
<li><a href="index.html">Audi</a></li>
<li><a href="index.html">BMW</a></li>
<li><a href="index.html">Cadillac</a></li>
<li><a href="index.html">Chrysler</a></li>
</ul>
</div>
<div>
</body>
</html>
© The jQuery Foundation and other contributors
Licensed under the MIT License.
https://api.jquerymobile.com/listview
|
|