existen varias formas de crear un plugins,
hay que entender lo siguiente:
(function($){
//aqui va la deficicion del plugin
$.myPlugin = function (options){
alert('hola soy un plugin directo');
}
})(jQuery)
aqui lo que se hace es crear una funcion anonima, del objeto $ y decimos que se autoejecute con (jQuery)
dentro de esto tiene que ir nuestro plugin, dependiendo a que queremos aplicar ejemplo:
aqui estamos extendiendo directamente el objeto jquery. no aplicable a ningun objeto en particular. plugin podemos llamarlo desde un script de la siguiente forma:
//llamado
$.myPlugin();//no aplica a ningun objeto en especifico, solo se ejecuta
2º opcion:
$.fn.myPlugin = function(options){
var defaults = {
color : '#ff00ff'
}
var op = $.extend(defaults, options);//aqui combino las opciones por default, con las opciones pasadas en options, si es que existen y quedan todo esto asignado a una variable op.
return this.each(function(){//recorro cada uno de los objetos pasado a la funcion
//aqui va el codigo a ejecutar
alert($(this).attr('id'));//mostrara el id de cada objeto llamado.
})
}
//aca el llamado al script tiene que ser desde un objeto jquery, de la forma;
$('div').myPlugin();
//aqui estamos diciendo que busque todos los div y a este conjunto de div devueltos en un objeto jquery, le aplique myPlugin() , retornando el id de cada uno de los div pasados.
te recomiendo usar $.fn.myPlugin, si solo decias crear un plugin separado, que es lo correcto en la mayoria de los casos.
(function($){
$.fn.myPlugin = function(options){
}
})(jQuery)
ahora si deceas crear en un mismo archivo .js varios plugins extendiendo el objeto fn, osea para aplicar a un conjunto de jquery puedes usar
$.fn.extend({
var plugin1 = function(options){
}
var plugin2 = function(options){
}
var plugin3 = function(options){
}
})
espero que hayas entendido...
Atte
Jonatan Pereira P.
Talca-Chile