причина, по которой работает первый, заключается в том, что - в его нынешнем виде - $ selector (document.id) в mootools возвращает фактический элемент. это - в обычных браузерах - идентично document.getElementById (), и объект элемента предоставляет все свои атрибуты / свойства для редактирования.
проблемы с НЕиспользованием .set:
- когда выйдет mootools 2.0, также известный как MILK, он не будет работать, так как будет упакован как jQuery, а селектор не вернет объект (mootools становится AMD, следовательно, он не будет изменять собственные типы - Element, Array, Число, строка, функция (возможно!) - прототипы).
- вы не можете связать это. с помощью набора вы можете:
$('someid').set("html", "loading...").highlight();
, например.
- set перегружен - он может устанавливать либо одно свойство, либо кратное посредством передачи объекта. например,
element.set({html: "hello", href: "#", events: boundObj});
- посмотрите на https://github.com/mootools/mootools-core/blob/master/Source/Element/Element.js#L936-942 - вы можете передать массив в качестве аргумента, и он присоединится к вам для вас, это упрощает работу с многострочными строками и обеспечивает производительность в IE
edit: поклонник BBT вроде как открыл отдельную тему: должен ли фреймворк пытаться блокировать вас / мешать вам делать вещи, которые нарушают работу браузера?
- если хотите, вы можете добавить запрещенные элементы, изменив этот установщик
Element.Properties.html.set = function() { var tag = this.get("tag"); ... check tag };
- разве mootools не хорош?
mootools - по умолчанию - НЕ будет пытаться помешать вам делать глупое дерьмо [tm] - это ваша ответственность :) попробуйте, например, установить отрицательное значение высоты элемента в IE. должен ли класс Fx помешать вам сделать это? Нет. Должен ли сеттер вас помешать? Нет. След постоянных проверок, чтобы увидеть, не нарушаете ли вы, означает, что это замедлит все в критических случаях, таких как анимация.