Мне нравится архитектура плагина 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();
Любые мысли?