Самый быстрый способ добавить несколько элементов со слушателями событий? плохо слушает клик по окну? - PullRequest
2 голосов
/ 06 сентября 2011

После моего предыдущего вопроса я поднял этот вопрос, который может быть лучше.

Мне нужно добавить много элементов на страницу, и я вижу, что иногда appendChild + fregment работает быстрее, чем innerHTML.В любом случае, теперь мне нужно было бы знать самый быстрый способ добавления элементов и добавления прослушивателей событий.

Один из способов, который я вижу, это прослушивать объект окна и затем фильтровать.Плюсы:

  • Добавьте только один раз, затем никогда
  • Нет ловушки памяти, если вы забудете удалить прослушиватели событий перед удалением, так как событие добавляется в объект окна
  • другие?

Минусы:

  • Может быть медленнее?
  • Медленнее, поскольку нам нужно фильтровать элементы и будем слушать все, что угодно ... может быть, слишкомМедленно на данный момент, я не знаю.

Другой способ, которым я знаю, это прослушивание созданного элемента.

Но с innerHTML я думаю, что работает только с объектом окнаслушатель.

Есть еще какие-нибудь мнения?спасибо

1 Ответ

2 голосов
/ 06 сентября 2011

Рекомендуется обрабатывать «множественные» обработчики событий для «многих» элементов: делегирование события , что в основном и является тем, что вы описали.

Создайте прослушиватель на ближайшем общем родителе (document.body, конечно, сделает это для любого элемента, но, возможно, ниже этого есть другой родительский узел).

Производительность здесь не должна быть проблемой.Гораздо хуже создавать как 200 функций-обработчиков событий вместо одной.

...