Uwielbiam architekturę wtyczek jQuery, jednak uważam ją za frustrującą (prawdopodobnie ze względu na brak zrozumienia z mojej strony), gdy chcę zachować odwołanie do instancji wtyczki, aby uzyskać dostęp do właściwości lub metody później w moim kodzie.Funkcje publiczne z wtyczki jQuery
Edit: Chciałbym wyjaśnić, że co ja naprawdę starają się zrobić, to zachować odniesienie do metod i właściwości wykorzystywanych wewnątrz wtyczki, tak że można je wykorzystać później
Weźmy przypadek ikona ładowania AJAX. W bardziej tradycyjnym środowisku OOP mógłbym:
var myIcon = new AJAXIcon();
myIcon.start();
//some stuff
myIcon.stop();
Metody i właściwości mojego obiektu są przechowywane na zmiennej do późniejszego wykorzystania. Teraz, jeśli chcę mieć taką samą funkcjonalność w plugin jQuery, nazwałbym go z moim głównym kodu trochę tak:
$("#myId").ajaxIcon()
umownie mój plugin musi powrócić do oryginalnego obiektu jQuery przekazany do mojego plugin pozwalający dla chainability, ale jeśli to zrobię, tracę możliwość dostępu do metod i właściwości instancji wtyczki.
Teraz wiem, że można zadeklarować funkcję publiczną w moim plugin, nieco na wzór
$.fn.ajaxIcon = function(options) {
return this.each(function() {
//do some stuff
}
}
$.fn.ajaxIcon.stop = function() {
//stop stuff
}
Jednak bez łamanie konwencji powrotu oryginalnego obiektu jQuery, nie mogę zachować odniesienie do konkretnej instancji wtyczki, której chcę się odwołać.
Chciałbym móc zrobić coś takiego:
var myIcon = $("myId").ajaxIcon(); //myIcon = a reference to the ajaxIcon
myIcon.start();
//some stuff
myIcon.stop();
jakieś przemyślenia?
To jest doskonała metoda, nawet wykraczająca poza to, co tutaj wyjaśnisz ... ponieważ mogę zrobić coś takiego jak var myPlugin = $ ('id'). MyPlugin(). OtherFunction(). Hide(), a myPlugin nadal będzie poprawne funkcje, ponieważ są one dodawane do węzła DOM przekazywanego do funkcji jQuery. – Daniel
Po kilku dniach, próbując to zrozumieć, dzięki Bogu, to jest tutaj. Czy jest jakiś postęp w tej dziedzinie od 2009 roku? – Ryan
Dzięki za przydatne wskazówki :) –