Last active
January 17, 2020 06:45
-
-
Save wtw24/390d46a256c2d8c881b34de80bd7a95d to your computer and use it in GitHub Desktop.
шаблон фабрики плагина jQuery UI (версий 1.8/9+)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// предваряющие точка с запятой предотвращают ошибки соединений | |
// с предыдущими скриптами, которые, возможно | |
// не были верно «закрыты». | |
;(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