jQuery.widget.bridge( name, constructor )
Описание: Часть jQuery Widget Factory — это метод jQuery.widget.bridge(). Он выступает в роли посредника между объектом, созданным $.widget(), и jQuery API.
$.widget.bridge() выполняет несколько действий:
- Подключает обычный JavaScript-конструктор к jQuery API.
- Автоматически создает экземпляры указанного объекта и хранит их в кэше элемента
$.data. - Разрешает вызовы публичных методов.
- Запрещает вызовы приватных методов.
- Запрещает вызовы методов на неинициализированных объектах.
- Защищает от множественной инициализации.
Виджеты jQuery UI создаются с помощью синтаксиса $.widget( "foo.bar", {} );, чтобы определить объект, из которого будут создаваться экземпляры. При наличии пяти .foo в структуре DOM, $( ".foo" ).bar(); создаст пять экземпляров вашего объекта "bar". $.widget.bridge() работает внутри фабрики, беря ваш базовый объект "bar" и предоставляя ему публичный API. Таким образом, вы можете создавать экземпляры, написав $( ".foo" ).bar(), и вызывать методы, написав $( ".foo" ).bar( "baz" ).
Если вам нужен только однократный вызов инициализации и вызов методов, ваш объект, переданный jQuery.widget.bridge(), может быть очень минимальным:
var Highlighter = function( options, element ) {
this.options = options;
this.element = $( element );
this._set( 800 );
};
Highlighter.prototype = {
toggle: function() {
this._set( this.element.css( "font-weight") === 400 ? 800 : 400 );
},
_set: function(value) {
this.element.css( "font-weight", value );
}
}; Всё, что вам нужно здесь — функция, которая действует как конструктор, принимающая два аргумента:
-
options: объект с параметрами конфигурации -
element: элемент DOM, на котором был создан этот экземпляр
Затем вы можете подключить этот объект в качестве jQuery-плагина, используя мост, и использовать его с любым jQuery-объектом:
// Hook up the plugin
$.widget.bridge( "colorToggle", Highlighter );
// Initialize it on divs
$( "div" ).colorToggle().click(function() {
// Call the public method on click
$( this ).colorToggle( "toggle" );
}); Чтобы использовать все функции моста, вашему объекту также нужен метод _init() в прототипе. Он будет вызываться всякий раз, когда плагин вызывается, когда экземпляр уже существует. В этом случае вам также нужен метод option(). Он будет вызван с параметрами в качестве первого аргумента. Если их не было, аргументом будет пустой объект. Для правильной реализации метода option, ознакомьтесь с реализацией $.Widget.
Есть один необязательный параметр, который мост будет использовать, если он присутствует: если у прототипа вашего объекта есть свойство widgetFullName, оно будет использоваться в качестве ключа для хранения и извлечения экземпляра. В противном случае будет использовано имя параметра.