хорошо, я немного новичок в плагинах, я использовал много в своих проектах, я также написал базовые плагины, которые работают только с элементами с опциями:
(function($){
$.fn.pulse = function(options) {
// Merge passed options with defaults
var opts = jQuery.extend({}, jQuery.fn.pulse.defaults, options);
return this.each(function() {
obj = $(this);
for(var i = 0;i<opts.pulses;i++) {
obj.fadeTo(opts.speed,opts.fadeLow).fadeTo(opts.speed,opts.fadeHigh);
};
// Reset to normal
obj.fadeTo(opts.speed,1);
});
};
// Pulse plugin default options
jQuery.fn.pulse.defaults = {
speed: "slow",
pulses: 2,
fadeLow: 0.2,
fadeHigh: 1
};
})(jQuery);
вышеописанное работает нормально, но, очевидно, оно выполняет одну задачу, в идеале я хотел бы иметь возможность выполнять несколько задач в плагине, чтобы я мог использовать:
$('#div').myplugin.doThis(options);
$('#div').myplugin.doThat(options;
причина в том, что у меня довольно большой скрипт, который выполняет различные вызовы ajax для сохранения данных и запроса данных из базы данных (используя внешний файл php). Я хотел бы интегрировать все эти функции в плагин, но я не Я знаю, какую структуру лучше использовать для этого, я просмотрел очень много учебников и, по сути, сжег свой мозг, и я не понимаю, как мне поступить.
это просто вопрос создания новой функции, такой как:
$.fn.pluginname.dothis = function(options){
return this.each(function() {
//execute code
};
};
любые указатели на это или шаблон, который поможет мне начать, были бы очень полезны.
вечно нуждающийся в помощи !!!
следующая задача:
(function($){
// Can use $ without fear of conflicts
//var gmap3plugin = $.fn.gmap3plugin;
var obj = this; // "this" is the jQuery object
var methods = {
init : function(options){
var lat = $.fn.gmap3plugin.defaults[lat];
var lng = $.fn.gmap3plugin.defaults[lng];
alert('init'+' lat:'+lat+' --- lng:'+lng);
},
show : function( ) { },
hide : function( ) { },
update : function( content ) { }
};
$.fn.gmap3plugin = function(method){
// Method calling logic
if ( methods[method] ) {
return methods[ method ].apply( this, Array.prototype.slice.call( arguments, 1 ));
} else if ( typeof method === 'object' || ! method ) {
return methods.init.apply( this, arguments );
} else {
$.error( 'Method ' + method + ' does not exist on jQuery.tooltip' );
};
};
$.fn.gmap3plugin.defaults = {
mapdiv :'#mapdiv',
region : 'uk',
lat : 53.4807125,
lng : -2.2343765
};
})(jQuery);
это функционирует и получает правильную функцию, которая передается,
но как мне получить доступ к значениям в $ .fn.gmap3plugin.defaults?
код в моем методе init возвращает undefined для lat и lng
init : function(options){
var lat = $.fn.gmap3plugin.defaults[lat];
var lng = $.fn.gmap3plugin.defaults[lng];
alert('init'+' lat:'+lat+' --- lng:'+lng);
},
или я не могу получить доступ к данным в $ .fn.gmap3plugin.defaults из функции ???