[js] jQuery plugin pattern
Published on 02.10.2011
Когато се налага да пиша някой плъгин за jquery използвам следния pattern за т.н quick start :) :
(function($) { $.pluginName = function(element, options) { var defaults = { foo: 'bar', onFoo: function() {} } var plugin = this; plugin.settings = {} var $element = $(element), element = element; plugin.init = function() { plugin.settings = $.extend({}, defaults, options); // code goes here } plugin.foo_public_method = function() { // code goes here } var foo_private_method = function() { // code goes here } plugin.init(); } $.fn.pluginName = function(options) { return this.each(function() { if (undefined == $(this).data('pluginName')) { var plugin = new $.pluginName(this, options); $(this).data('pluginName', plugin); } }); } })(jQuery);като използването на плъгина става по следния начин:
// Инициализираме плъгина към даден елемент
$('#element').pluginName({'foo': 'bar'});
// извикваме публичен метод
$('#element').data('pluginName').foo_public_method();
// "взимаме" някоя от конфиг елементите
$('#element').data('pluginName').settings.foo;
Авторът е Stefan Gabos
Подобрена/обновена версия може да се изтегли от https://github.com/zenorocha/jquery-boilerplate/