Spec-Zone.ru › jQuery Mobile

Виджет переключатель

Виджет переключательверсия добавлена: 1.4

Описание: Создаёт виджет переключатель

Быстрый переходПримеры

Параметры

классы
углы
значения по умолчанию
отключенный
улучшенный
мини
текст "Выкл."
текст "Вкл."
тема
класс обёртки

Методы

удалить
отключить
включить
параметр
обновить

События

создание

Переключатели

Переключатель — это альтернативный вид чекбокса или двухвариантного списка. Его можно переключать щелчком или свайпом.

Чтобы создать переключатель, добавьте атрибут data-role="flipswitch" к чекбоксу input или к select, у которого есть два option значения.

Темы

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

  • ui-flipswitch: Внешний контейнер переключателя. Кроме того, класс ui-flipswitch-active будет применён, если переключатель находится в активном
    • ui-flipswitch-on: Метка включённого состояния переключателя
    • ui-flipswitch-off: Метка выключенного состояния переключателя
    • ui-flipswitch-input: Элемент чекбокса для переключателя

Переключатель на основе чекбокса

Используйте следующий разметку для создания переключателя на основе чекбокса input:

<fieldset>
  <div data-role="fieldcontain">
    <label for="checkbox-based-flipswitch">Checkbox-based:</label>
    <input type="checkbox" id="checkbox-based-flipswitch" data-role="flipswitch">
  </div>
</fieldset>
Метки переключателя управляются параметрами onText и offText.

Переключатель на основе списка

Вы также можете создать переключатель на основе элемента select:

<fieldset>
  <div data-role="fieldcontain">
    <label for="select-based-flipswitch">Select-based:</label>
    <select id="select-based-flipswitch" data-role="flipswitch">
      <option value="leave">Bye</option>
      <option value="arrive">Hi</option>
    </select>
  </div>
</fieldset>
Метки переключателя управляются метками элементов select элемента option. Первый вариант используется для неактивного, "выключенного" состояния, а второй вариант — для активного, "включённого" состояния.

Пользовательские метки

Вы можете настроить отображаемые метки виджета переключатель, используя параметры onText и offText, если виджет основан на чекбоксе, или используя текст внутри первых двух элементов option , если виджет основан на select.

Расположение текста внутри двух меток задаётся вручную в структурном CSS виджета переключатель. Таким образом, если вы используете метки, которые длиннее, чем "Вкл." и "Выкл.", вам, возможно, придётся переопределить стандартное размещение текста с помощью следующего пользовательского CSS:

.ui-flipswitch .ui-btn.ui-flipswitch-on {
  text-indent: -2.6em;
}
.ui-flipswitch .ui-flipswitch-off {
  text-indent: 1em;
}

В зависимости от вашего выбора меток, вам также может потребоваться предоставить пользовательский CSS для переопределения значения ширины переключателя по умолчанию:

.ui-flipswitch {
  width: 5.875em;
}
.ui-flipswitch.ui-flipswitch-active {
  padding-left: 4em;
  width: 1.875em;
}
@media (min-width: 28em) {
  // Repeated from rule .ui-flipswitch above
  .ui-field-contain > label + .ui-flipswitch {
    width: 1.875em;
  }
}

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

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

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

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

Виджет переключатель добавляет обёртку div вокруг input. В дополнение к исходному элементу обёртка также содержит два элемента span , где хранятся две метки. Первая span стилизуется как кнопка с текстом активного состояния, отображающимся за пределами области кнопки слева. Чтобы сделать переключатель доступным для навигации по табуляции, вы можете добавить атрибут tabindex="1" к первой span.

В примере ниже предоставлена предварительно отрендеренная разметка для переключателя. Атрибут data-corners="false" явно указан, поскольку отсутствие класса ui-corner-all на элементе обёртки указывает, что параметр виджета "углы" должен быть false.

<div class="ui-flipswitch ui-shadow-inset ui-bar-inherit">
  <span tabindex="1" class="ui-flipswitch-on ui-btn ui-shadow ui-btn-inherit">On</span>
  <span class="ui-flipswitch-off">Off</span>
  <input type="checkbox" data-role="flipswitch" data-enhanced="true" data-corners="false" name="flip-checkbox" class="ui-flipswitch-input">
</div>

Параметры

classes

Тип: Объект
По умолчанию:
{
        "ui-flipswitch": "ui-shadow-inset ui-corner-all",
        "ui-flipswitch-on": "ui-shadow"
      }

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

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

Инициализируйте flipswitch с указанным параметром classes, изменяя тему для класса ui-flipswitch:

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

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

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

corners

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

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

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

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

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

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

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

defaults

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

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

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

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

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

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

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

disabled

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

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

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

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

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

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

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

enhanced

Тип: Булево
По умолчанию: false
Указывает, что разметка, необходимая для виджета flipswitch, была предоставлена в исходной разметке.

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

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

Инициализируйте flipswitch с указанным параметром enhanced:

$( ".selector" ).flipswitch({
  enhanced: true
});

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

// Getter
var enhanced = $( ".selector" ).flipswitch( "option", "enhanced" );
 
// Setter
$( ".selector" ).flipswitch( "option", "enhanced", true );

mini

Тип: Булево
По умолчанию: null (false)
Если установлено true, это отобразит более компактную версию flipswitch, используя меньше вертикальной высоты, применяя класс ui-mini к самому внешнему элементу виджета flipswitch.

Примечание: параметр mini устарел в версии 1.5 и будет удален в версии 1.6

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

offText

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

Когда виджет flipswitch основан на флажке, а не на select, значение этого параметра используется в качестве метки для состояния «Выкл.».

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

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

Инициализируйте flipswitch с указанным параметром offText:

$( ".selector" ).flipswitch({
  offText: "Go"
});

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

// Getter
var offText = $( ".selector" ).flipswitch( "option", "offText" );
 
// Setter
$( ".selector" ).flipswitch( "option", "offText", "Go" );

onText

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

Когда виджет flipswitch основан на флажке, а не на select, значение этого параметра используется в качестве метки для состояния «Вкл.».

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

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

Инициализируйте flipswitch с указанным параметром onText:

$( ".selector" ).flipswitch({
  onText: "Stay"
});

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

// Getter
var onText = $( ".selector" ).flipswitch( "option", "onText" );
 
// Setter
$( ".selector" ).flipswitch( "option", "onText", "Stay" );

theme

Тип: Строка
По умолчанию: null, inherited from parent
Устанавливает цветовую схему (палитру) для виджета flipswitch. Принимает одиночную букву от a до z, которая соответствует палитрам, включенным в вашу тему.

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

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

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

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

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

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

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

wrapperClass

Тип:
По умолчанию: null
Сложно написать пользовательскую CSS для обертки div вокруг нативного элемента input созданного фреймворком. Этот параметр позволяет указать один или несколько разделенных пробелами имен классов, которые должны быть добавлены к элементу обертки div фреймворком.

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

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

Инициализируйте flipswitch с указанным параметром wrapperClass:

$( ".selector" ).flipswitch({
  wrapperClass: "custom-class"
});

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

// Getter
var wrapperClass = $( ".selector" ).flipswitch( "option", "wrapperClass" );
 
// Setter
$( ".selector" ).flipswitch( "option", "wrapperClass", "custom-class" );

Методы

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Обновляет flipswitch.

Если вы изменяете flipswitch с помощью JavaScript, необходимо вызвать метод refresh, чтобы обновить визуальное оформление.

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

Вызов метода refresh:

$( ".selector" ).flipswitch( "refresh" );

События

create( event, ui )Тип: flipswitchcreate

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

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

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

Инициализация flipswitch с указанным обработчиком события create:

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

Привязка обработчика событий к событию flipswitchcreate:

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

Пример:

Базовый пример флажка в поле ввода

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>flipswitch 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="header">
    <h1>jQuery Mobile Example</h1>
  </div>
  <div role="main" class="ui-content">
    <div class="ui-field-contain">
      <form>
        <div data-role="fieldcontain">
          <label for="checkbox-based-flipswitch-0">Checkbox-based:</label>
          <input type="checkbox" id="checkbox-based-flipswitch-0" data-role="flipswitch">
        </div>
      </form>
    </div>
  </div>	
</body>
</html>

Демо:

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

Spec-Zone.ru

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