| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > JavaScript: для новичков > Выключение обработчиков события из элемента |
| Автор: numerovan 14.6.2010, 13:41 | ||
| Наткнулся на такую проблему - добавление и удаление обработчиков в необходимый момент. Как это сделать пока не знаю. Многие показывают пример, который расположен вот тут http://javascript.ru/tutorial/events/crossbrowser. Делаю вроде как там написанно, но ни чего не получается.
Может есть какой нибудь хороший способ это осуществить, желательно кроссбраузерный. |
| Автор: нуп 14.6.2010, 16:01 |
| на jquery есть bind/unbind |
| Автор: ksnk 14.6.2010, 16:59 |
| numerovan, зачем это нужно? Какая задача решается? Используются ли какие-нибудь js-библиотеки? |
| Автор: ex3c 14.6.2010, 17:10 |
| numerovan, detachEvent/removeEventListener. |
| Автор: numerovan 14.6.2010, 17:56 | ||||||||
bind/unbind хорошие функции конечно, но душа что-то к ним не лежит. Bind имеет свойство присоединять к себе события, как писалось в литературе может несолкько click-ов к себе присоединить. Хотелось бы узнать как это делать (удалять/присоединять события) без помощи jQuery.
Узнать как можно сделать подобное через сам яваскрипт. Задача такая - сделать следующее, в коде пропишу...
эти фунции на всех браузерах будут работать ? Помоему нет. |
| Автор: ksnk 14.6.2010, 18:07 |
detachEvent будет работать на части броузеров, на остальной части будет работать removeEventListener. Написать функцию, которая будет таки вызыватся кроссброузерно - дело 3-х строк. Однако! Обе эти функции могут снять ранее установленный обработчик событий, но только в случае если известна функция, которая ставилась как обработчик. если функция-обработчик неизвестна - снять обработчик нельзя. Так что можно написать некую обертку над событиями, которая сохраняет и факт установки события на елемент и функцию и получить возможность удалять все ранее установленное скопом. Так поступает jQuery, так поступает и объект Event из примера. Так что задачи, насколько я понял пока - это не решит. Есть, правда, мысль о том, что в результате клонирования элемента установленные на JS обработчики событий не клонируются и сбрасываются, но эту мысль надо бы проверить |