несколько вещей здесь.
прежде всего. строки являются неизменяемыми, поэтому выполнение element.innerHTML += "<br>"
действует как полное чтение и перезапись.
секунда, почему это плохо:
помимо производительности, mootools (и, в этом отношении, jquery) назначает специальные уникальные последовательные идентификаторы всем элементам, на которые ссылаются. Вы ссылаетесь на элемент, вызывая селектор или создавая его и т. д.
затем рассмотрим, что СПЕЦИФИЧЕСКИЙ элемент с uid
скажем 5. uid
связан со специальным объектом с именем Storage
, который находится за замыканием (таким образом, его закрытый). он имеет uid
в качестве ключа.
элемент хранения затем работает на element.store("key", value")
и element.retrieve("key")
и, наконец, почему это важно: events
хранятся в хранилище элементов (например, Storage [5] ['events']) - выполните element.retrieve ("events") и изучите его в fireBug, если вы любопытно.
при переписывании innerHTML старый элемент перестает существовать. затем он воссоздается, но обработчик события И ссылка на функцию, которую вы связали ранее, больше не будут работать, поскольку теперь он получит NEW uid
.
вот и все, надеюсь, это имеет смысл.
чтобы добавить br, просто сделайте new Element("br").inject(element)
вместо этого или создайте шаблонный фрагмент для лота (самый быстрый) и добавьте 1 большой кусок, добавляя события после.