Manera de gestionar opciones en los plugins de jQuery, a través de un objeto de options enviado al invocar el plugin, para hacerlos un poco más versátiles y con configuración más fácil.
Una de las tareas típicas que realizaremos es la creación de un sistema para cargar opciones con las que configurar el comportamiento de los plugins. Estas opciones las recibirá el plugin como parámetro cuando lo invocamos inicialmente. Nosotros, como desarrolladores del plugin, tendremos que definir cuáles van a ser esas opciones de configuración y qué valores tendrán por defecto.
La ayuda del sitio de jQuery para la creación de plugins sugiere la manera con la que realizar el proceso de configuración del plugin, por medio de un objeto de "options", que nos facilitará bastante la vida.
Por qué son interesantes los options en plugins
La idea que hay detrás de la carga de opciones en los plugins ya la conocemos, que éstos sean más configurables y por lo tanto más versátiles. Pero vamos a intentar dar un ejemplo más claro sobre cómo esas opciones pueden hacer a los plugins más versátiles.Imaginemos un plugin para mostrar una caja de diálogo como las que hacemos con jQuery UI.
Esas cajas de diálogo permiten mostrar mensajes en una capa emergente. Esa caja podría tener diversos parámetros para configurarla, como su altura, anchura, título de la caja, etc. Todos esos parámetros podríamos enviarlos al dar de alta la caja, con un código como este:
$("#capa").crearCaja(400, 200, "titulo", ...);
Pero eso no es práctico, porque el usuario debería indicar todos los parámetros para crear la caja, o al menos si no indica unos no podría indicar otros que están detrás en la lista. Luego, en el código del plugin, el desarrollador debería comprobar qué parámetros se indican, uno a uno, y darles valores por defecto si no se han indicado, etc. Todo eso ampliaría demasiado el código fuente.
Entonces, lo que se suele hacer al dar de alta el plugin, es indicar una serie de datos con notación de objeto:
$("#capa").crearCaja({
titulo: "titulo",
anchura: 400,
altura: 200,
...
});
El desarrollador del plugin colocará en el código fuente un objeto con las variables de configuración y sus valores por defecto. Luego, cuando se cree el plugin, lo mezclará con el objeto de options enviado por parámetro, con una única sentencia, con lo que obtendrá rápidamente el objeto completo de configuración del plugin que debe ser aplicado.
Definir opciones por defecto en el código del plugin
Con el siguiente código podemos definir las variables de configuración por defecto de un plugin y combinarlas con las variables de options enviadas por parámetro al invocar el plugin.
jQuery.fn.miPlugin = function(cualquierCosa, opciones) {
//Defino unas opciones por defecto
var configuracion = {
dato1: "lo que sea",
dato2: 78
}
//extiendo las opciones por defecto con las recibidas
jQuery.extend(configuracion, opciones);
//resto del plugin
//donde tenemos la variable configuracion para personalizar el plugin
}
La función principal del plugin recibe dos parámetros, uno "cualquierCosa" y otro "opciones". El primero supongamos que es algo que necesita el plugin, pero la configuración, que es lo que nos importa ahora, se ha recibido en el parámetro "opciones".
Ya dentro de la función del plugin, se define el objeto con las opciones de configuración, con sus valores por defecto, en una variable llamada "configuracion".
En la siguente línea se mezclan los datos de las opciones de configuración por defecto y las recibidas por el plugin al inicializarse. Luego podremos acceder por medio de la variable "configuracion" todas las opciones del plugin que se va a iniciar.
Invocar al plugin enviando el objeto de opciones
Ahora podemos ver el código que utilizaríamos para invocar al plugin pasando las opciones que deseamos:
$("#elemento).miPlugin({
dato1: "Hola amigos!",
dato2: true
});
O podríamos enviar sólo alguno de los datos de configuración, para que el resto se tomen por defecto:
$("<div></div>").miPlugin({
dato2: 2.05
});
O no enviar ningún dato al crear el plugin para utilizar los valores por defecto en todas las opciones de configuración.
$("p").miPlugin();
Concusión sobre la configuración de plugins con el objeto de opciones
Hasta el momento no hemos visto más que un código parcial de lo que sería un plugin con options para su configuración. Pero esperamos haber despejado ya algunas dudas. No obstante, veremos mejor cómo funciona todo por medio de un ejemplo en un artículo siguiente.Continuar la lectura con el ejercicio Plugin Tip con opciones en jQuery.
Miguel Angel Alvarez
Fundador de DesarrolloWeb.com y la plataforma de formación online EscuelaIT. Com...