Me encanta la arquitectura del complemento jQuery, sin embargo, me parece frustrante (probablemente debido a una falta de comprensión de mi parte) cuando quiero retener una referencia a la instancia del complemento para acceder a las propiedades o métodos más adelante en mi código.Funciones públicas desde un plugin jQuery
Editar: Quiero aclarar que lo que yo estoy tratando de hacer es mantener una referencia a los métodos y propiedades que se utilizan dentro del plug-in, para que pueda usarlos más tarde
Tomemos el caso de un ícono de carga de AJAX. En un entorno de programación orientada a objetos más tradicional, lo que podía hacer:
var myIcon = new AJAXIcon();
myIcon.start();
//some stuff
myIcon.stop();
Los métodos y propiedades de mi objeto se almacenan en una variable para su uso posterior. Ahora bien, si yo quiero tener la misma funcionalidad en un plugin de jQuery, yo diría que es de mi código principal algo como esto:
$("#myId").ajaxIcon()
Por convención, mi plugin necesita para devolver el objeto jQuery originales pasado a mi plug-in que permite para la capacidad de recuperación, pero si lo hago, pierdo la capacidad de acceder a los métodos y las propiedades de la instancia del complemento.
Ahora, sé que se puede declarar una función pública en mi plugin, tanto en la línea de
$.fn.ajaxIcon = function(options) {
return this.each(function() {
//do some stuff
}
}
$.fn.ajaxIcon.stop = function() {
//stop stuff
}
Sin embargo, sin romper la convención de la devolución del objeto original jQuery, no puedo retener una referencia a la instancia específica del complemento al que me refiero.
Me gustaría ser capaz de hacer algo como esto:
var myIcon = $("myId").ajaxIcon(); //myIcon = a reference to the ajaxIcon
myIcon.start();
//some stuff
myIcon.stop();
¿Alguna idea?
Este es un método excelente, incluso más allá de lo que explicas aquí ... ya que puedo hacer algo como var myPlugin = $ ('id'). MyPlugin(). OtherFunction(). Hide(), y myPlugin todavía tendrá el funciones correctas, ya que se agregan al nodo DOM que se pasa a la función jQuery. – Daniel
Después de unos días, si intentas resolver esto, gracias a Dios, esto está aquí. ¿Hay algo de desarrollo en esto desde 2009? – Ryan
Gracias por los consejos útiles :) –