Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Плагин в jQuery — это обертка над элементом
/**
* Конструктор плагина Multiinput
* @param {HTMLElement} element - container of multiinput
* @param {options} options object passed from jquery adapter
**/
function MultiInput(element, options){
var $this = this;
this.ancestor = $(element);
this.options = options;
}
/*Добавляем к конструктору необходимые методы*/
MultiInput.prototype = {
/**
* trigger plugin event
* Моя реализация событий в плагинах. Я вызываю данный метод, который одновременно вызывает и
* коллбэк функцию указанную в опциях и поджигает событие с помощью triggerHandler()
* @param {string} event - event name for triggering
* @param {object} context - ('this' for event handler) this param will be passed to 'call()' function
* @param {array|object} params - custom arguments for handler
**/
triggerEvent: function(event, context, params){
if(!(params instanceof Array)) {
params = [params];
}
this.ancestor.triggerHandler(event, params);
this.options[event].apply(context, params);
},
/**Остальные методы плагина**/
}
/**
* jQuery plugin
* @param {options} options
**/
$.fn.multiInput = function(options){
var options = jQuery.extend({
//some default options
}, options)
return this.each(function() {
//Для каждого найденного элемента создаем свой экземпляр плагина, передаем в него свой экземпляр настроек, и таким образом решаем проблемы "изоляции областей видимости переменных".
//Кроме того, экземпляр плагина хранится непосредственно в DOM объекте, и
//добавив несколько дополнительных условий в данный конструктор можно реализовать функции get/set и вызов методов для каждого экземпляра прикрепленного к элементу
$(this).data('multiinput', new MultiInput(this, options));
});
}
Использование событий в jQuery плагинах