Нужно ли удалять события в js?
После того как событие выполнило свою работу и больше не нужно обязательно ли его удалять?
Вот есть кнопка, при клике возникает сообщение, предположим выводит "да" и "нет" - к ним привязано событие. Когда пользователь выберет вариант сообщение пропадет, но событие останется. Нужно ли за этим следить? |
Цитата:
Если возможна повторная обработка - не трогать. Если нет - удалять или "прятать" сам источник возникновения события... |
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
|
Gozar, Shaci,
Обработчик это функция, которая реагирует на событие. Удаляется событие на которое вешается обработчик (функция) Цитата:
Ведь событий может быть очень много и если их не утилизировать то они так и будут занимать память, разве нет? |
Цитата:
Повесь пожалуйста на click или mousemove вот эту функцию: function A() { alert(10); } Цитата:
|
В ниже следующем коде ты собираешься делать e = null?
var top = document.getElementById('maintable-first'); function handler(e) { alert(e.constructor); //[object MouseEvent] //e = null; } top.addEventListener('click', handler, false); |
Gozar,
e - это объект который возвращает браузер как реакцию на событие, разве нет? Под событиями я понимаю click, mouseover, mousemove и прочие да и метод removeEvent в перевода значит "удалить событие" Я тоже сначала хотел назвать тему "удалить обработчик", но обработчик это функция, которая может быть использована не только с событием, зачем ее удалять? Правильно тогда было бы сказать: удалить реакцию браузера на событие или как-то так)) |
dmitry111,
Не нужно трахать всем мозг. Ты создаешь ссылку на обработчик события. Цитата:
Назвать тему нужно было: Нужно ли удалять ссылку на обработчик события, если он уже не нужен. Ты плаваешь в понимании происходящего. Ищи темы про leak, если боишься обработчиков. Но в действительности ты ещё только на вершине айсберга. Замыкания могут "теоретически" сожрать память до падения браузера, на слабом компе. Особенно если ты будешь удалять ссылку на обработчик, а обработчик не умрет, а вот ссылку ты уже потеряешь на него. Хочешь копнуть - создай окошко drug&drop с закрытием по крестику и чтобы его можно было таскать и чтобы окошек этих можно было создать одновременно 1000 и потести. Узнаешь много интересного. |
Gozar,
Цитата:
Цитата:
Формулировка вроде моей: "удалять событие" или вроде вашей (и часто употребляемой кстати): Цитата:
|
Цитата:
Это общепринятое понятие и если ты хочешь, чтобы тебя понимали другие люди, кроме твоего внутреннего ЭГО, то извольте выражаться на общепринятом языке. |
зы: И да я вкурсе как переводиться listener.
|
И по теме. Удалять объект события не нужно, он удаляется сборщиком мусора, когда на него удалены все ссылки. В то время как обработчики события удалять нужно иначе память очищаться не будет и они будут болтаться в ней. Если на click это не критично, то на mousemove может стать очень критично.
|
ок, да я и не спорю..
Удалять обработчик события, пусть будет так, раз все привыкли; |
dmitry111, ответ на вопрос.
Цитата:
Цитата:
$( document ).on( 'click', 'простыня :)', function() { }); все зависит от ситуации |
Цитата:
|
Приводите пожалуйста примеры кода, в подтверждение ваших слов. Моя твоя не понимай. Вернее моя, твоя понимай, но давайте с кода начинать, а не создавать дурацкие темы с догадайся сам, что я имею в виду.
Я уже когда-то имел удовольствие препираться по поводу вопроса "Сколько флешей может быть установлено на одной машине". Как оказалось вопрос получился с подковыркой. На самом деле плагинов отвечающих за интерпретацию кода может быть несколько(в линукс точно, в винде возможно только один), а вот хранилище флеша используется всегда одно. |
Цитата:
<script src="http://code.jquery.com/jquery-1.8.3.js"></script> <script> var Gozar = $( {} ); Gozar.on( 'say', function() { // создали свое событие и подписались на него alert( 'All monkeys are different.' ); }); Gozar.trigger( 'say' ); // сгенерировали Gozar.off( 'say' ); // удалили обработчик // теоретически, ничего не мешает удалить и самое событе </script> Цитата:
|
Цитата:
Хотя то, что ты называешь пользовательскими событиями на самом деле являются искусственными, а пользовательские таки click, mousemove и т.д. |
Цитата:
Gozar is killer of errors :) |
Gozar, важно не слово, а его значение. Цель языка - коммуникация, обмен идеями и мыслями. Нужно же быть идиотом, не то что телепатом, чтобы не понять что под "событием" человек имеет ввиду обработчики событий. Так у меня вопрос, ты притворяешься идиотом который не понял и решил поумничать, поговорить очевидности или действительно идиот?
- ко ко ко, у слов есть общепринятые значения, если все будут говорить кто как вздумает тогда и понмиатьп ерестанут ко ко ко. Дело в том что, как я уже выше сказал, цель языка - обмен идеями и мыслями, и если язык свою функцию выполняет, то значит он свою функцию выполняет, и дополнительные громоздкие уточнения ни к чему, тут же, язык выполнил свою функцию, и все НЕ ИДИОТЫ поняли о чем речь. Так же такая формулировка вопроса позволила отсеять идиотов от дискуссии(видимо не всех). Ответь пожалуйста на мой первый вопрос. |
Atae,
да нет, Gozar, прав что поправил.. Хотя вместо фразы: "Удалить обработчик события" я все таки буду использовать: "Отменить(отключить) обработчик события" detachEvent навел на мысль кстати)) |
что тебе вообще мешает почитать статью про события?
|
так я на основе статьи заголовок и составлял))))
там и написано было что обработчик события это функция. Ну вроде бы функцию удалить же мы не можем, а событие вроде как тоже не можем, но "событие" это что-то более абстрактное, потому и написал) |
Atae,
nemo? maxmax? Не гони. Хе, хе. Я почти купился. :) Я предложил сразу постить код. Так что твоя демагогия неуместна. Есть события - абстрактные понятия, объект события со своим конструктором, функции установщик/удаление обработчиков событий и обработчики событий. Если у тебя события означают только одно, то ты сам идиот. А лично я пытаюсь для себя узнать что-то новое или хотя бы обсуждать что-то конкретное. |
Gozar,
слушай я не немо, окей? я так понимаю это местный дурачек? обьясни чем знаменит сабж. хоть один пост остался? Цитата:
|
Цитата:
|
Цитата:
я просто решил если я буду притворяться если меня будет это бесить то будут ли меня пытаться этим дразнить). вывод ясен И да Гозар, я немо. И всегда им был. Я просто переехал. дай ссылку на свой вконтакт, подеаноню тебя ненмого |
Цитата:
Не с той ноги встал? |
дда у тебя мегасайт который приносит тебе кучу бабла и при том ты младше меня на 2 года, читал читал. кинь пруф в личку гляну, досить не буду.
|
Часовой пояс GMT +3, время: 16:47. |