кэширующие селекторы, которые часто используются - это всегда хорошая идея.пространство имен за глубоким объектом на несколько уровней создает более длинную, чем необходимая глобальную цепочку областей видимости, imo.Я склонен кешировать селекторы в простых замыканиях или используя хранилище элементов mootools.
например, если у вас есть ссылка в div, которая находит родителя, затем находит 2 элемента вниз и первый img, и вы можете видеть, как пользователь нажимает на нее несколько раз, вы можете сделать что-то вроде этого:
document.id("somelink").addEvent("click", function() {
var targetImg = this.retrieve("targetImg") || this.store("targetImg", this.getParent().getNext().getNext().getElement("img.close"));
targetImg.fade(.5);
...
});
при первом щелчке он ищет целевой img и сохраняет его под хранилищем ссылки с ключом targetImg
, при любых последующих щелчках будет использоваться сохраненная ссылка.хранилище mootools, которое создается во время расширения элемента и назначения uid.это просто простой объект за замыканием, поэтому он не находится в проприетарном свойстве элемента, который будет замедлять доступ в IE и т. д., и его нет ни в одном окне.свойство.
если вы рассматриваете философию кодирования mootools в целом - т.е. код с классом - есть несколько вещей, которые (не) написаны лучшие практики при написании класса / плагина mootools.
если это относится к одному элементу, тогда установите this.element = document.id(element);
- сохранить ссылку.если это массив, то аналогично вы делаете кеширование this.elements = document.getElements(this.options.selector);
, поэтому всегда сохраняйте ссылку на главный селектор.