кэширование селекторов, которые часто используются, всегда является хорошей идеей. пространство имен за объектом с несколькими уровнями глубины создает более длинную, чем необходимо, глобальную цепочку областей видимости, 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);
поэтому всегда сохраняйте ссылку на главный селектор.
person
Dimitar Christoff
schedule
27.07.2010