with plugin custom create crear and events jquery-plugins authoring plugin-architecture

events - custom - Crea un plugin, expone eventos



jquery plugin methods and options (2)

¿Cómo expongo eventos a mis usuarios de complementos?

Sé que debería usar:

$(''#myPluginDiv'').trigger(''eventName'', ["foo", "bar"]);

para activar el evento, pero estoy buscando las mejores prácticas que describen cómo declarar e invocar eventos en complementos.


en el complemento crear objetos literarios como

var plugin = { show:function(){ // code for show() } };


Creo que puede inspeccionar algunos de los complementos más utilizados y hacer sus propias suposiciones. No tenemos estándares en esto, solo convención de código.

Colorbox (fuente: https://github.com/jackmoore/colorbox/blob/master/jquery.colorbox.js ) define un prefijo y algunas constantes para los nombres de los eventos. También tiene una función para activar y ejecutar las devoluciones de llamada.

jQuery UI (fuente: https://github.com/jquery/jquery-ui/blob/master/ui/jquery.ui.widget.js ) también tiene una función común en la clase de widget para desencadenar eventos (uso: https: //github.com/jquery/jquery-ui/blob/master/ui/jquery.ui.dialog.js ), pero se puede ver que los eventos están codificados en el medio de la fuente, en lugar de las constantes en la parte superior como en Colorbox.

Personalmente creo, y lo hago en mis propios complementos, que la creación de constantes es mucho mejor si tienes que desencadenar muchos eventos, pero no es necesario si disparas solo 2 o 3 eventos.

Una función auxiliar es imprescindible y debe ser parte de su plantilla.

Los nombres de eventos que utilizo y veo en general siguen el CamelCase estándar, por ejemplo, beforeClose .

Algunos recomiendan el uso de un prefijo para eventos como el de cbox_open de Colorbox o incluso click.myPlugin (ver: http://api.jquery.com/on/#event-names )

Conclusión: trate de seguir las mejores prácticas y convenciones para la programación en general y esté atento a los mejores ejemplos que existen.