Spec-Zone.ru › jQuery UI

Фабрика виджетов

Содержание:

  • jQuery.widget( имя [, база ], прототип )
    • jQuery.widget( имя [, база ], прототип )
  • jQuery.Widget

jQuery.widget( имя [, база ], прототип )

Описание: Создайте построительные плагины jQuery, используя ту же абстракцию, что и все виджеты jQuery UI.

  • jQuery.widget( имя [, база ], прототип )

    • имя
      Тип: Строка
      Имя создаваемого виджета, включая имя пространства имён.
    • база
      Тип: Функция()
      Базовый виджет для наследования. Должен быть конструктором, который можно создать с помощью ключевого слова `new`. По умолчанию jQuery.Widget.
    • прототип
      Тип: Объект
      Объект, который будет использоваться как прототип для виджета.

Вы можете создавать новые виджеты с нуля, используя только объект $.Widget в качестве базового для наследования, или вы можете явно унаследовать от существующих виджетов jQuery UI или сторонних виджетов. Определение виджета с тем же именем, что и у наследователя, даже позволяет расширять виджеты на месте.

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

Ищете учебные материалы о фабрике виджетов? Посмотрите статьи на сайте jQuery Learning Center.

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

Инициализация

Для отслеживания состояния виджета необходимо ввести полный жизненный цикл виджета. Жизненный цикл начинается, когда виджет инициализируется. Чтобы инициализировать виджет, просто вызовите плагин на одном или нескольких элементах.

$( "#elem" ).progressbar();

Это инициализирует каждый элемент в объекте jQuery, в этом случае элемент с идентификатором "elem".

Параметры

Поскольку progressbar() был вызван без параметров, виджет был инициализирован со своими значениями по умолчанию. Мы можем передать набор параметров во время инициализации, чтобы переопределить значения по умолчанию:

$( "#elem" ).progressbar({ value: 20 });

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

Вы можете передать несколько аргументов параметров. Эти аргументы будут объединены в один объект (подобно $.extend( true, target, object1, objectN )). Это полезно для совместного использования параметров между экземплярами, одновременно переопределяя некоторые свойства для каждого из них:

var options = { modal: true, show: "slow" };
$( "#dialog1" ).dialog( options );
$( "#dialog2" ).dialog( options, { autoOpen: false });

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

Значения по умолчанию хранятся в прототипе виджета, поэтому у нас есть возможность переопределить значения, установленные jQuery UI. Например, после выполнения следующего действия все будущие экземпляры progressbar по умолчанию будут иметь значение 80:

$.ui.progressbar.prototype.options.value = 80;

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

Методы

Теперь, когда виджет инициализирован, мы можем запросить его состояние или выполнить действия с виджетом. Все действия после инициализации выполняются в виде вызова метода. Чтобы вызвать метод виджета, мы передаём имя метода в плагин jQuery. Например, чтобы вызвать метод value() для нашего виджета progressbar, мы бы использовали:

$( "#elem" ).progressbar( "value" );

Если метод принимает параметры, мы можем передать их после имени метода. Например, чтобы передать параметр 40 методу value(), мы можем использовать:

$( "#elem" ).progressbar( "value", 40 );

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

$( "#elem" )
  .progressbar( "value", 90 )
  .addClass( "almost-done" );

Каждый виджет будет иметь свой набор методов, основанных на функциональности, которую предоставляет виджет. Однако есть несколько методов, которые существуют во всех виджетах, которые документированы ниже.

События

Все виджеты имеют события, связанные с их различным поведением, чтобы уведомить вас, когда состояние изменяется. Для большинства виджетов, когда события срабатывают, имена имеют префикс имени виджета и преобразуются в нижний регистр. Например, мы можем привязаться к событию change progressbar, которое срабатывает всякий раз, когда значение изменяется.

$( "#elem" ).bind( "progressbarchange", function() {
  alert( "The value has changed!" );
});

Каждое событие имеет соответствующую функцию обратного вызова, которая представлена в качестве параметра. Мы можем подключиться к функции обратного вызова change progressbar вместо привязки к событию progressbarchange, если хотим.

$( "#elem" ).progressbar({
  change: function() {
    alert( "The value has changed!" );
  }
});

Все виджеты имеют событие create, которое срабатывает при создании экземпляра.

Экземпляр

Экземпляр виджета можно получить из данного элемента с помощью метода instance().

$( "#elem" ).progressbar( "instance" );

Если метод instance() вызывается на элементе, который не связан с виджетом, возвращается undefined.

$( "#not-a-progressbar" ).progressbar( "instance" ); // undefined

Экземпляр хранится с помощью jQuery.data() с полным именем виджета в качестве ключа. Следовательно, селектор :data также может определить, привязан ли к элементу данный виджет.

$( "#elem" ).is( ":data('ui-progressbar')" ); // true
$( "#elem" ).is( ":data('ui-draggable')" ); // false

В отличие от instance(), :data можно использовать, даже если виджет, для которого проверяется, ещё не загружен.

$( "#elem" ).nonExistentWidget( "instance" ); // TypeError
$( "#elem" ).is( ":data('ui-nonExistentWidget')" ); // false

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

$( ":data('ui-progressbar')" );

Свойства

Все виджеты имеют следующий набор свойств:

  • defaultElement: Элемент, используемый, когда экземпляр виджета создаётся без предоставления элемента. Например, так как defaultElement - это "<div>, $.ui.progressbar({ value: 50 }) создаёт экземпляр виджета progressbar на только что созданном <div>.
  • document: Объект jQuery, содержащий document, в котором находится элемент виджета. Полезно, если вам нужно взаимодействовать с виджетами во фреймах.
  • element: Объект jQuery, содержащий элемент, используемый для создания виджета. Если вы выбираете несколько элементов и вызываете .myWidget(), для каждого элемента будет создан отдельный экземпляр виджета. Поэтому это свойство всегда будет содержать один элемент.
  • namespace: Местоположение в глобальном объекте jQuery, где хранится прототип виджета. Например, namespace "ui" указывает, что прототип виджета хранится в $.ui.
  • options: Объект, содержащий параметры, которые в данный момент используются виджетом. При создании экземпляра любые параметры, предоставленные пользователем, автоматически будут объединены со значениями по умолчанию, определёнными в $.myNamespace.myWidget.prototype.options. Параметры, указанные пользователем, переопределяют значения по умолчанию.
  • uuid: Уникальный целочисленный идентификатор виджета.
  • version: Строковая версия виджета. Для виджетов jQuery UI это будет версия jQuery UI, которую использует виджет. Разработчики виджетов должны явно установить это свойство в своём прототипе.
  • widgetEventPrefix: Префикс, добавляемый к имени событий, сгенерированных этим виджетом. Например, widgetEventPrefix виджета draggable - это "drag", поэтому при создании виджета draggable имя события, сгенерированного, - это "dragcreate". По умолчанию widgetEventPrefix виджета - это его имя. Примечание: Это свойство устарело и будет удалено в будущих версиях. Имена событий будут изменены на widgetName:eventName (например, "draggable:create").
  • widgetFullName: Полное имя виджета, включая пространство имён. Для $.widget( "myNamespace.myWidget", {} ), widgetFullName будет "myNamespace-myWidget".
  • widgetName: Имя виджета. Для $.widget( "myNamespace.myWidget", {} ), widgetName будет "myWidget".
  • window: Объект jQuery, содержащий window, в котором находится элемент виджета. Полезно, если вам нужно взаимодействовать с виджетами во фреймах.

Базовый виджет

Описание: Базовый виджет, используемый фабрикой виджетов.

Быстрый доступ

Параметры

классы
отключен
скрыть
показать

Методы

_addClass
_create
_delay
_destroy
_focusable
_getCreateEventData
_getCreateOptions
_hide
_hoverable
_init
_off
_on
_removeClass
_setOption
_setOptions
_show
_super
_superApply
_toggleClass
_trigger
удалить
отключить
включить
экземпляр
параметр
виджет

События

создано

Параметры

классы

Тип: Объект
Значение по умолчанию: {}

Дополнительные (тематические) классы, которые нужно добавить к виджету помимо структурных. Структурные классы используются как ключи этого параметра, а тематические — как значения. См. _addClass() метод для использования в пользовательских виджетах. Обратитесь к документации отдельных виджетов, чтобы узнать, какие классы они поддерживают.

Основная цель этого параметра — сопоставление структурных классов с тематическими. Другими словами, любой класс, начинающийся с префикса namespace и widget, например "ui-progressbar-", считается структурным классом. Они всегда добавляются к виджету. В отличие от этого, любой класс, не относящийся к конкретному виджету, считается тематическим. Они могут быть частью CSS-фреймворка jQuery UI, но также могут поступать из других CSS-фреймворков или быть определены в пользовательских стилях.

Установление параметра classes после создания переопределит все свойства по умолчанию. Чтобы изменить только определённые значения, используйте глубокие установщики, например .option( "classes.ui-progressbar-value", null ).

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

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

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

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

// Getter
var classes = $( ".selector" ).widget( "option", "classes" );
 
// Setter, override all classes
$( ".selector" ).widget( "option", "classes", { "custom-header": "icon-warning" } );
 
// Setter, override just one class
$( ".selector" ).widget( "option", "classes.custom-header", "icon-warning" );

отключен

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

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

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

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

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

скрыть

Тип: Булево или Число или Строка или Объект
Значение по умолчанию: null
Как и с какой анимацией скрыть элемент.
Поддерживаемые типы:
  • Булево: При значении false, анимация не будет использоваться, и элемент будет скрыт сразу. При значении true, элемент будет скрыт с плавным выходом с использованием по умолчанию продолжительности и плавности.
  • Число: Элемент будет скрываться с указанной продолжительностью и плавностью по умолчанию.
  • Строка: Элемент будет скрыт с использованием указанного эффекта. Значение может быть именем встроенного метода анимации jQuery, например "slideUp", или именем эффекта jQuery UI, например "fold". В любом случае эффект будет использоваться с по умолчанию продолжительностью и плавностью.
  • Объект: Если значение — объект, то могут быть указаны свойства effect, delay, duration, и easing. Если свойство effect содержит имя метода jQuery, то будет использован этот метод; в противном случае предполагается, что это имя эффекта jQuery UI. При использовании эффекта jQuery UI, поддерживающего дополнительные настройки, вы можете включить эти настройки в объект, и они будут переданы эффекту. Если duration или easing опушены, будут использоваться значения по умолчанию. Если effect опущено, будет использовано "fadeOut". Если delay опущено, задержка не используется.
Примеры кода:

Инициализация виджета с указанным параметром hide:

$( ".selector" ).widget({
  hide: { effect: "explode", duration: 1000 }
});

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

// Getter
var hide = $( ".selector" ).widget( "option", "hide" );
 
// Setter
$( ".selector" ).widget( "option", "hide", { effect: "explode", duration: 1000 } );

показать

Тип: Булево или Число или Строка или Объект
Значение по умолчанию: null
Как и с какой анимацией отобразить элемент.
Поддерживаемые типы:
  • Булево: При значении false, анимация не будет использоваться, и элемент будет показан сразу. При значении true, элемент будет показан с плавным появлением с использованием по умолчанию продолжительности и плавности.
  • Число: Элемент будет появляться с указанной продолжительностью и плавностью по умолчанию.
  • Строка: Элемент будет показан с использованием указанного эффекта. Значение может быть именем встроенного метода анимации jQuery, например "slideDown", или именем эффекта jQuery UI, например "fold". В любом случае эффект будет использован с по умолчанию продолжительностью и плавностью.
  • Объект: Если значение — объект, то могут быть указаны свойства effect, delay, duration, и easing. Если свойство effect содержит имя метода jQuery, то будет использован этот метод; в противном случае предполагается, что это имя эффекта jQuery UI. При использовании эффекта jQuery UI, поддерживающего дополнительные настройки, вы можете включить эти настройки в объект, и они будут переданы эффекту. Если duration или easing опущено, будут использованы значения по умолчанию. Если effect опущено, будет использовано "fadeIn". Если delay опущено, задержка не используется.
Примеры кода:

Инициализация виджета с указанным параметром show:

$( ".selector" ).widget({
  show: { effect: "blind", duration: 800 }
});

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

// Getter
var show = $( ".selector" ).widget( "option", "show" );
 
// Setter
$( ".selector" ).widget( "option", "show", { effect: "blind", duration: 800 } );

Методы

_addClass( [element ], keys [, extra ] )Returns: jQuery (plugin only)

Добавление классов к элементу виджета.

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

Это также обеспечивает автоматическое удаление этих классов при уничтожении виджета, если вы используете _addClass(), _removeClass() и _toggleClass() вместе. Это может значительно упростить реализацию пользовательских методов _destroy().

  • element
    Type: jQuery
    Элемент, к которому нужно добавить классы. По умолчанию this.element.
  • keys
    Type: String
    Классы для добавления, как список, разделенный пробелами. Если свойство classes option совпадает с ключом, значение также будет добавлено.

    Если вам нужен только аргумент extra, вы можете пропустить этот аргумент, указав null.

  • extra
    Type: String
    Дополнительные классы для добавления, необходимые для макета или по другим причинам. В отличие от аргумента keys, они не связаны ни с какими свойствами classes option. Так же как keys, они также будут автоматически удалены при уничтожении виджета.
Примеры кода:

Добавить класс ui-progressbar к элементу виджета (this.element). Также добавит любые дополнительные классы, указанные через classes option для данного класса.

this._addClass( "ui-progressbar" );

Добавить класс demo-popup-header к указанному элементу (здесь ссылка на this.popup). Также добавит любые дополнительные классы, указанные через classes option для данного класса. Кроме того, он всегда будет добавлять класс ui-front.

this._addClass( this.popup, "demo-popup-header", "ui-front" );

Добавляет класс ui-helper-hidden-accessible к указанному элементу. Использует null для аргумента keys, чтобы пропустить его.

this._addClass( this.liveRegion, null, "ui-helper-hidden-accessible" );

_create()Returns: jQuery (plugin only)

Метод _create() является конструктором виджета. Параметров нет, но this.element и this.options уже установлены.
  • Этот метод не принимает никаких аргументов.
Примеры кода:

Установить цвет фона элемента виджета на основе параметра.

_create: function() {
  this.element.css( "background-color", this.options.color );
}

_delay( fn [, delay ] )Returns: Number

Вызывает предоставленную функцию после указанной задержки. Поддерживает правильный контекст this. По существу setTimeout().

Возвращает ID таймаута для использования с clearTimeout().

  • fn
    Type: Function() or String
    Функция для вызова. Может быть также именем метода виджета.
  • delay
    Type: Number
    Количество миллисекунд ожидания перед вызовом функции. По умолчанию 0.
Примеры кода:

Вызов метода _foo() виджета через 100 миллисекунд.

this._delay( this._foo, 100 );

_destroy()Returns: jQuery (plugin only)

Публичный метод destroy() очищает все общие данные, события и т. д., а затем делегирует _destroy() для пользовательской, специфичной для виджета, очистки.
  • Этот метод не принимает никаких аргументов.
Примеры кода:

Удалить класс из элемента виджета, когда виджет уничтожается.

_destroy: function() {
  this.element.removeClass( "my-widget" );
}

_focusable( element )Returns: jQuery (plugin only)

Настраивает element для применения класса ui-state-focus при фокусировке.

Обработчики событий автоматически очищаются при уничтожении.

  • element
    Type: jQuery
    Элемент(ы), к которым нужно применить поведение фокусировки.
Примеры кода:

Применить стиль фокусировки к набору элементов в виджете.

this._focusable( this.element.find( ".my-items" ) );

_getCreateEventData()Returns: Object

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

Передать параметры виджета обработчикам событий create в качестве аргумента.

_getCreateEventData: function() {
  return this.options;
}

_getCreateOptions()Returns: Object

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

Сделать атрибут id элемента виджета доступным как параметр.

_getCreateOptions: function() {
  return { id: this.element.attr( "id" ) };
}

_hide( element, option [, callback ] )Returns: jQuery (plugin only)

Скрывает элемент немедленно, используя встроенные методы анимации или пользовательские эффекты. См. параметр hide для возможных значений option.
  • element
    Type: jQuery
    Элемент(ы), которые нужно скрыть.
  • option
    Type: Object
    Свойства, определяющие, как скрыть элемент.
  • callback
    Type: Function()
    Обратный вызов для вызова после того, как элемент будет полностью скрыт.
Примеры кода:

Передать параметр hide для пользовательских анимаций.

this._hide( this.element, this.options.hide, function() {
 
  // Remove the element from the DOM when it's fully hidden.
  $( this ).remove();
});

_hoverable( element )Returns: jQuery (plugin only)

Настраивает element для применения класса ui-state-hover при наведении.

Обработчики событий автоматически очищаются при уничтожении.

  • element
    Type: jQuery
    Элемент(ы), к которым нужно применить поведение наведения.
Примеры кода:

Применить стиль наведения ко всем <div> внутри элемента при наведении.

this._hoverable( this.element.find( "div" ) );

_init()Returns: jQuery (plugin only)

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

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

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

Вызвать метод open(), если параметр autoOpen установлен.

_init: function() {
  if ( this.options.autoOpen ) {
    this.open();
  }
}

_off( element, eventName )Returns: jQuery (plugin only)

Отменяет привязку обработчиков событий к указанным элементам(ам).
  • element
    Type: jQuery
    Элемент(ы), из которых нужно отменить привязку обработчиков событий. В отличие от метода _on(), элементы необходимы для _off().
  • eventName
    Type: String
    Один или несколько типов событий, разделенных пробелами.
Примеры кода:

Отменить привязку всех событий click к элементу виджета.

this._off( this.element, "click" );

_on( [suppressDisabledCheck ] [, element ], handlers )Возвращает: jQuery (только для плагина)

Связывает обработчики событий со заданным элементом(ами). Поддержка делегирования через селекторы внутри имён событий, например, "click .foo". Метод _on() предоставляет несколько преимуществ по сравнению с прямым привязкой событий:
  • Сохраняет правильный this контекст внутри обработчиков.
  • Автоматически обрабатывает отключённые виджеты: если виджет отключен или событие происходит на элементе с классом ui-state-disabled, обработчик событий не вызывается. Может быть переопределён параметром suppressDisabledCheck.
  • Обработчики событий автоматически получают имена пространств имён и очищаются при уничтожении.
  • suppressDisabledCheck (по умолчанию: false)
    Тип: Boolean
    Обойти ли проверку на отключение.
  • element
    Тип: jQuery
    Элемент(ы), к которому(ым) привязываются обработчики событий. Если элемент не указан, используется this.element для событий без делегирования и элемент виджета для событий с делегированием.
  • handlers
    Тип: Object
    Объект, в котором ключи представляют тип события и (необязательный) селектор для делегирования, а значения — функция-обработчик, которая вызывается для события.
Примеры кода:

Предотвратить стандартное действие всех ссылок, нажатых внутри элемента виджета.

this._on( this.element, {
  "click a": function( event ) {
    event.preventDefault();
  }
});

_removeClass( [element ], keys [, extra ] )Возвращает: jQuery (только для плагина)

Удаляет классы из элемента виджета.

Аргументы такие же, как для метода _addClass(), применяются те же семантики, только в обратном порядке.

  • element
    Тип: jQuery
    Элемент, из которого удаляются классы. По умолчанию this.element.
  • keys
    Тип: String
    Удаляемые классы, в виде списка, разделённого пробелами. Если свойство опции classes соответствует ключу, значение также будет удалено.

    Если вам нужен только аргумент extra, вы можете пропустить этот аргумент, указав null.

  • extra
    Тип: String
    Дополнительные классы для удаления, необходимые для макета или по другим причинам. В отличие от аргумента keys, они не связаны ни с каким свойством опции classes.
Примеры кода:

Удалить класс ui-progressbar из элемента виджета (this.element). Также удалятся любые дополнительные классы, указанные через опцию classes для данного класса.

this._removeClass( "ui-progressbar" );

Удалить класс demo-popup-header из указанного элемента (здесь ссылающегося на this.popup). Также удалятся любые дополнительные классы, указанные через опцию classes для данного класса. Кроме того, также будет удалён класс ui-front.

this._removeClass( this.popup, "demo-popup-header", "ui-front" );

Удалить класс ui-helper-hidden-accessible из указанного элемента. Использует null для аргумента keys для его пропуска.

this._removeClass( this.liveRegion, null, "ui-helper-hidden-accessible" );

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

Вызывается из метода _setOptions() для каждой отдельной опции. Состояние виджета должно обновляться в зависимости от изменений.
  • key
    Тип: String
    Имя опции для установки.
  • value
    Тип: Object
    Значение для установки опции.
Примеры кода:

Обновить элемент виджета при изменении опций height или width.

_setOption: function( key, value ) {
  if ( key === "width" ) {
    this.element.width( value );
  }
  if ( key === "height" ) {
    this.element.height( value );
  }
  this._super( key, value );
}

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

Вызывается всякий раз, когда вызывается метод option(), независимо от формы, в которой был вызван метод option().

Переопределение этого метода полезно, если можно отложить ресурсоёмкие изменения на несколько изменений опций.

  • options
    Тип: Object
    Объект, содержащий опции для установки, где имя опции является ключом, а значение опции — значением.
Примеры кода:

Вызвать метод resize() при изменении опций height или width.

_setOptions: function( options ) {
  var that = this,
    resize = false;
 
  $.each( options, function( key, value ) {
    that._setOption( key, value );
    if ( key === "height" || key === "width" ) {
      resize = true;
    }
  });
 
  if ( resize ) {
    this.resize();
  }
}

_show( element, option [, callback ] )Возвращает: jQuery (только для плагина)

Отображает элемент немедленно, используя встроенные методы анимации или настраиваемые эффекты. См. опцию show для возможных option значений.
  • element
    Тип: jQuery
    Элемент(ы) для отображения.
  • option
    Тип: Object
    Свойства, определяющие, как отображать элемент.
  • callback
    Тип: Function()
    Обратный вызов, который нужно вызвать после того, как элемент будет полностью отображён.
Примеры кода:

Передайте опцию show для настраиваемых анимаций.

this._show( this.element, this.options.show, function() {
 
  // Focus the element when it's fully visible.
  this.focus();
}

_super( [arg ] [, ... ] )Возвращает: jQuery (только для плагина)

Вызывает метод с тем же именем из родительского виджета с указанными аргументами. По существу .call().
  • arg
    Тип: Object
    Ноль или несколько аргументов, передаваемых в метод родительского виджета.
Примеры кода:

Обработка обновлений опции title и вызов родительского метода _setOption() для обновления внутренней памяти опции.

_setOption: function( key, value ) {
  if ( key === "title" ) {
    this.element.find( "h3" ).text( value );
  }
  this._super( key, value );
}

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

Вызывает метод с тем же именем из родительского виджета с заданным массивом аргументов. По существу .apply().
  • arguments
    Тип: Array
    Массив аргументов, передаваемых в родительский метод.
Примеры кода:

Обработка обновлений опции title и вызов родительского метода _setOption() для обновления внутренней памяти опции.

_setOption: function( key, value ) {
  if ( key === "title" ) {
    this.element.find( "h3" ).text( value );
  }
  this._superApply( arguments );
}

_toggleClass( [element ], keys [, extra ], add )Возвращает: jQuery (только для плагина)

Переключает классы элемента виджета.

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

В отличие от метода jQuery .toggleClass(), булевский аргумент add всегда обязателен.

  • element
    Тип: jQuery
    Элемент, на котором нужно переключить классы. По умолчанию this.element.
  • keys
    Тип: Строка
    Классы для переключения, в виде списка, разделённого пробелами. Если свойство опции classes совпадает с ключом, значение также будет переключено.

    Если вам нужен только аргумент extra, вы можете пропустить этот аргумент, указав null.

  • extra
    Тип: Строка
    Дополнительные классы для переключения, необходимые для макета или по другим причинам. В отличие от аргумента keys, они не связаны ни с какими свойствами опции classes. Так же как и keys, они также будут автоматически удалены при уничтожении виджета.
  • add
    Тип: Булево

    Указывает, нужно ли добавлять или удалять указанные классы, где булевское значение true указывает на добавление классов, а булевское значение false указывает на удаление классов.

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

Переключить класс ui-state-disabled на элементе виджета (this.element).

this._toggleClass( null, "ui-state-disabled", !!value );

_trigger( type [, event ] [, data ] )Возвращает: Булево

Срабатывает событие и его связанные обратные вызовы.

Опция с именем, равным типу, вызывается в качестве обратного вызова.

Имя события — это строчное объединение имени виджета и типа.

Примечание: При передаче данных вы должны передать все три параметра. Если нет события для передачи, просто передайте null.

Если действие по умолчанию предотвращено, будет возвращено false, в противном случае true. Предотвращение действия по умолчанию происходит, когда обработчик возвращает false или вызывает event.preventDefault().

  • type
    Тип: Строка
    Тип type должен соответствовать имени опции обратного вызова. Полный тип события будет сгенерирован автоматически.
  • event
    Тип: Событие
    Исходное событие, вызвавшее это событие; полезно для предоставления контекста слушателю.
  • data
    Тип: Объект
    Хэш данных, связанных с событием.
Примеры кода:

Срабатывает событие search всякий раз, когда нажимается клавиша.

this._on( this.element, {
  keydown: function( event ) {
 
    // Pass the original event so that the custom search event has
    // useful information, such as keyCode
    this._trigger( "search", event, {
 
      // Pass additional information unique to this event
      value: this.element.val()
    });
  }
});

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

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

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

Отключает виджет.
  • Этот метод не принимает никаких аргументов.

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

Включает виджет.
  • Этот метод не принимает никаких аргументов.

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

Возвращает объект экземпляра виджета. Если у элемента нет связанного экземпляра, возвращается undefined.

В отличие от других методов виджетов, instance() можно безопасно вызывать на любом элементе после загрузки плагина виджета.

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

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

Получает значение, в настоящее время связанное с указанной optionName.

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

  • optionName
    Тип: Строка
    Имя опции для получения.

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

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

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

Устанавливает значение опции виджета, связанной с указанным optionName.

Примечание: Для опций, имеющих объекты в качестве значения, вы можете установить значение только одного свойства, используя нотацию с точкой для optionName. Например, "foo.bar" обновит только свойство bar опции foo.

  • optionName
    Тип: Строка
    Имя опции для установки.
  • value
    Тип: Объект
    Значение для установки опции.

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

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

widget()Возвращает: jQuery

Возвращает объект jQuery, содержащий исходный элемент или другой соответствующий сгенерированный элемент.
  • Этот метод не принимает никаких аргументов.

События

create( event, ui )Тип: widgetcreate

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

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

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

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

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

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

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

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

Spec-Zone.ru

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