Как отменить событие
С точки зрения хорошего тона в js, можно ли событие ставить на весь документ?
document.onclick = function (event) { if (event.target == xxx) { // что-то выполнить } else if (event.target == yyy) { // что-то выполнить } else { //отменить } }; Событие стоит на весь документ, как это отразится на производительности, если документ большой? Как сделать лучше? |
Цитата:
Цитата:
Цитата:
|
Цитата:
планирую объединить все события на клик в одно. Мне кажется код приобретет более читаемый вид. |
на клик ещё ладно, но не стоит делать так на mousemove)
а вот отменять события для всего документа - дурная практика |
Основная задача для которой вешают обработчик события на весь документ - когда нужно обработать событие на однотипных объектах, которые могут появлятся и исчезать.
Например клик по всем ссылкам, можно уложить в один обработчик, и любые свежедобавленные ссылки также будут выполнять этот код, без необходимости назначать им личный обработчик. При этом глобальный обработчик естественно не отменяет событие Так работает jQuery.live С точки зрения производительности, навешивание общего обработчика отъест меньше памяти, и меньше времени займет навешивание самого события. Обработка события при этом будет чуть дольше(если проверять тип целевого объекта) |
Цитата:
Цитата:
При использовании Bubbling лучше вешать на максимальную близость к элементам - общему родителю - <body>, например. |
Часовой пояс GMT +3, время: 09:57. |