Skip to content

Instantly share code, notes, and snippets.

@wtw24
Last active January 17, 2020 06:45
Show Gist options
  • Save wtw24/390d46a256c2d8c881b34de80bd7a95d to your computer and use it in GitHub Desktop.
Save wtw24/390d46a256c2d8c881b34de80bd7a95d to your computer and use it in GitHub Desktop.
шаблон фабрики плагина jQuery UI (версий 1.8/9+)
// предваряющие точка с запятой предотвращают ошибки соединений
// с предыдущими скриптами, которые, возможно
// не были верно «закрыты».
;(function ( $, window, document, undefined ) {
// можно определять неймспейс плагина,
// со своими параметрами, к примеру
// $.widget( "namespace.widgetname", (optional)) - наследуемый
// прототип виджета, и прототипирование нового виджета
$.widget( "namespace.widgetname" , {
// Дифолтные значения
options: {
someValue: null
},
// Создание виджета
// (создание элементов, назначение стилей, навешивание событий)
_create: function () {
// метод _create будет вызван автоматически
// при первом вызове виджета.
// здесь можно обращаться к элементу,
// на котором создается виджет, через this.element.
// Свойства и методы доступны через
// this.options и this.element.addStuff();
},
// деструктор плагина и
// очистка изменений в DOM, сделанных плагином
destroy: function () {
// this.element.removeStuff();
// для версий jQuery UI 1.8, нужно вызывать
// метод destroy базового виджета
$.Widget.prototype.destroy.call(this);
// для версий UI 1.9 достаточно определить
// метод _destroy, и можно не вызывать базовый деструктор
},
methodB: function ( event ) {
// метод _trigger вызывает события
// на которые можно подписываться
// сигнатура: _trigger( "callbackName" , [eventObject],
// [uiObject] )
// например this._trigger( "hover", e /*where e.type ==
// "mouseenter"*/, { hovered: $(e.target)});
this._trigger('methodA', event, {
key: value
});
},
methodA: function ( event ) {
this._trigger('dataChanged', event, {
key: value
});
},
// Метод переопределения свойств плагина
_setOption: function ( key, value ) {
switch (key) {
case "someValue":
//this.options.someValue = doSomethingWith( value );
break;
default:
//this.options[ key ] = value;
break;
}
// для версий UI 1.8 приходится
// вызывать метод базового виджета
$.Widget.prototype._setOption.apply( this, arguments );
// для UI 1.9 достаточно вызвать метод _super
// this._super( "_setOption", key, value );
}
});
})( jQuery, window, document );
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment