Есть ли разница между .innerHTML и .set ('html', '') в mootools? - PullRequest
4 голосов
/ 02 февраля 2012

Чтобы установить html элементов на моем сайте, я использую в основном

$('elementId').innerHTML = "<p>text</p>";

Просматривая документы mootools, я нашел следующий пример:

$('myElement').set('html', '<div></div><p></p>');

Есть ли какая-то разницамежду этими?Должен ли я перейти и изменить .innerHTML на метод mootools, или это не имеет значения?

1 Ответ

3 голосов
/ 02 февраля 2012

причина, по которой работает первый, заключается в том, что - в его нынешнем виде - $ 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 помешать вам сделать это? Нет. Должен ли сеттер вас помешать? Нет. След постоянных проверок, чтобы увидеть, не нарушаете ли вы, означает, что это замедлит все в критических случаях, таких как анимация.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...