Adoro l'architettura del plugin jQuery, tuttavia, trovo frustrante (probabilmente a causa di una mancanza di comprensione da parte mia) quando voglio mantenere un riferimento all'istanza del plugin per accedere alle proprietà o metodi più avanti nel mio codice.Funzioni pubbliche da un plug-in jQuery
Edit: Ci tengo a precisare che quello che sto davvero cercando di fare è mantenere un riferimento ai metodi e le proprietà utilizzati all'interno del plugin, in modo che io possa utilizzare in seguito
Consente di prendere il caso di un'icona di caricamento AJAX. In un ambiente di programmazione orientata agli oggetti più tradizionale, che potevo fare:
var myIcon = new AJAXIcon();
myIcon.start();
//some stuff
myIcon.stop();
I metodi e le proprietà di mio oggetto sono memorizzati su una variabile per un uso successivo. Ora, se voglio avere la stessa funzionalità in un plugin jQuery, lo chiamerei dal mio codice principale un po 'come questo:
$("#myId").ajaxIcon()
Per convenzione, il mio plug-in deve restituire l'oggetto jQuery originale passato al mio plug-in che consente per la chainability, ma se lo faccio, perdo la possibilità di accedere ai metodi e alle proprietà dell'istanza del plugin.
Ora, so che è possibile dichiarare una funzione pubblica nella mia plug-in, un po 'sulla falsariga di
$.fn.ajaxIcon = function(options) {
return this.each(function() {
//do some stuff
}
}
$.fn.ajaxIcon.stop = function() {
//stop stuff
}
Tuttavia, senza rompere la convenzione di restituire l'oggetto originale jQuery, non riesco a mantenere una riferimento alla specifica istanza del plugin a cui voglio riferirmi.
mi piacerebbe essere in grado di fare qualcosa del genere:
var myIcon = $("myId").ajaxIcon(); //myIcon = a reference to the ajaxIcon
myIcon.start();
//some stuff
myIcon.stop();
Qualche idea?
Questo è un metodo eccellente, anche al di là di quello che spieghi qui ... come posso fare qualcosa come var myPlugin = $ ('id'). MyPlugin(). OtherFunction(). Hide() e myPlugin avrà ancora il funzioni corrette, poiché vengono aggiunte al nodo DOM che viene passato alla funzione jQuery. – Daniel
Dopo alcuni giorni se si cerca di capirlo, grazie a Dio questo è qui .. C'è qualche sviluppo su questo dal 2009? – Ryan
Grazie per i consigli utili :) –