Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   Нужно ли удалять события в js? (https://javascript.ru/forum/offtopic/33507-nuzhno-li-udalyat-sobytiya-v-js.html)

dmitry111 26.11.2012 04:38

Нужно ли удалять события в js?
 
После того как событие выполнило свою работу и больше не нужно обязательно ли его удалять?

Вот есть кнопка, при клике возникает сообщение, предположим выводит "да" и "нет" - к ним привязано событие. Когда пользователь выберет вариант сообщение пропадет, но событие останется.

Нужно ли за этим следить?

ksa 26.11.2012 09:54

Цитата:

Сообщение от dmitry111
Нужно ли за этим следить?

Все зависит от алгоритма...
Если возможна повторная обработка - не трогать. Если нет - удалять или "прятать" сам источник возникновения события...

Gozar 26.11.2012 11:41

Цитата:

Сообщение от dmitry111
Нужно ли удалять события в js?

Не встречал, чтобы удаляли события. Это возможно?

Gozar 26.11.2012 12:00

Цитата:

Сообщение от iGodOfAllMaxmaxmaximus
removeEventListener, а вообще толсто и не смешно

Ты удалил обработчик а не событие. Вопрос задан иначе. Учимся правильно задавать вопросы. Всё таки ресурс не философский, а программистский.

Shaci 26.11.2012 12:08

Цитата:

Сообщение от Gozar (Сообщение 217882)
Ты удалил обработчик а не событие. Вопрос задан иначе. Учимся правильно задавать вопросы. Всё таки ресурс не философский, а программистский.

во-во, через ж.. вопросы задают(

melky 26.11.2012 13:08

Цитата:

Сообщение от dmitry111
Нужно ли за этим следить?

заместо тысячи обработчиков клика по кнопкам "да", "нет" лучше повесить один на родителя - window, например.

dmitry111 26.11.2012 13:31

Gozar, Shaci,

Обработчик это функция, которая реагирует на событие.
Удаляется событие на которое вешается обработчик (функция)


Цитата:

Сообщение от iGodOfAllMaxmaxmaximus
Ты сам решаешь нужно или нет. Пагубные последствия - миллибайты памяти. Если те похер - не следи, не похер - следи.

узнать бы что дороже: создавать/удалять событие при каждой необходимости или повесить один раз и держать его в памяти?
Ведь событий может быть очень много и если их не утилизировать то они так и будут занимать память, разве нет?

Gozar 26.11.2012 14:41

Цитата:

Сообщение от dmitry111
Удаляется событие на которое вешается обработчик (функция)

:blink: Код в студию.
Повесь пожалуйста на click или mousemove вот эту функцию:

function A() {
alert(10);
}


Цитата:

addEventListener() registers a single event listener on a single target. The event target may be a single element in a document, the document itself, a window, or an XMLHttpRequest.

Gozar 26.11.2012 15:09

В ниже следующем коде ты собираешься делать e = null?

var top = document.getElementById('maintable-first');

function handler(e) {
    alert(e.constructor); //[object MouseEvent]
    //e = null;
}

top.addEventListener('click', handler, false);

dmitry111 26.11.2012 15:41

Gozar,

e - это объект который возвращает браузер как реакцию на событие, разве нет?

Под событиями я понимаю click, mouseover, mousemove и прочие


да и метод removeEvent в перевода значит "удалить событие"


Я тоже сначала хотел назвать тему "удалить обработчик", но обработчик это функция, которая может быть использована не только с событием, зачем ее удалять?


Правильно тогда было бы сказать: удалить реакцию браузера на событие или как-то так))


Часовой пояс GMT +3, время: 18:47.