mootools: найти все экземпляры объекта Accordion? - PullRequest
0 голосов
/ 20 ноября 2011

У меня есть страница, которая создает несколько mootools объектов Accordion в Joomla.Это mootools 1.2.5 в Jooma 1.5

Насколько я понимаю, javascript не предоставляет элегантный способ найти все экземпляры определенного класса.Я должен был бы изменить код, чтобы создать глобальный массив или список каждого экземпляра, который добавляется при каждом создании нового экземпляра, а затем выполнять итерацию по этому списку.

Интересно, есть ли в mootools вспомогательная функция, которая уже отслеживает коллекции своих объектов?(Я хочу свернуть все остальные аккордеоны, когда один развернут)

1 Ответ

1 голос
/ 21 ноября 2011

многие классы mootools сохраняют ссылки на себя внутри хранилища элементов. не так с Fx.Accordion.

вы, вероятно, можете найти, если переменная имеет Fx.accordion в качестве своего конструктора, но нет никаких гарантий, что она будет существовать - нередко просто запустить конструктор класса без сохранения ссылки.

вероятно, проще всего было бы реорганизовать конструктор Fx.Accordion и заставить его записать копию экземпляра в главном элементе или где-либо - для сохранения ссылки.

Например,

var orig = Fx.Accordion.initialize;
Fx.Accordion.initialize = function() {
    orig.apply(this, arguments);
    this.element.store("accordion", this); // or... 
    // window.accordions.push(this);
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...