Мне нравится архитектура плагина jQuery, однако я нахожу это разочаровывающим (возможно, из-за недостатка понимания с моей стороны), когда я хочу сохранить ссылку на экземпляр плагина для доступа к свойствам или методам позже в моем коде.
Редактировать: Я хочу уточнить, что я действительно пытаюсь сделать, это сохранить ссылку на методы и свойства, используемые в плагине, чтобы я мог использовать их позже
Давайте рассмотрим значок загрузки AJAX. В более традиционной среде ООП я мог бы сделать:
var myIcon = new AJAXIcon();
myIcon.start();
//some stuff
myIcon.stop();
Методы и свойства моего объекта хранятся в переменной для последующего использования. Теперь, если я хочу иметь такую же функциональность в плагине jQuery, я бы назвал его из своего основного кода примерно так:
$("#myId").ajaxIcon()
По договоренности, мой плагин должен возвращать исходный объект jQuery, переданный моему плагину, с учетом цепочки, но если я это сделаю, я потеряю возможность доступа к методам и свойствам экземпляра плагина.
Теперь я знаю, что вы можете объявить публичную функцию в моем плагине, что-то вроде
$.fn.ajaxIcon = function(options) {
return this.each(function () {
//do some stuff
}
}
$.fn.ajaxIcon.stop = function() {
//stop stuff
}
Однако, не нарушая соглашения о возврате исходного объекта jQuery, я не могу сохранить ссылку на конкретный экземпляр плагина, на который я хочу сослаться.
Я хотел бы иметь возможность сделать что-то вроде этого:
var myIcon = $("myId").ajaxIcon(); //myIcon = a reference to the ajaxIcon
myIcon.start();
//some stuff
myIcon.stop();
Есть мысли?