Книга: JavaScript. Подробное руководство, 6-е издание
19.4.5. Удаление обработчиков событий
19.4.5. Удаление обработчиков событий
После регистрации обработчика событий с помощью метода bind()
(или с помощью простых методов регистрации обработчиков) его можно удалить с помощью метода unbind(),
чтобы предотвратить его вызов при появлении событий в будущем. (Обратите внимание, что метод unbind()
удаляет только обработчики, зарегистрированные методом bind()
и родственными ему методами объекта jQuery
. Он не удаляет обработчики, зарегистрированные с помощью метода addEventListener()
или attachEvent(),
а также не удаляет обработчики, объявленные в атрибутах элементов, таких как onclick
и onmouseover
.) При вызове без аргументов метод unbind()
удалит все обработчики событий (для всех типов событий) из всех выбранных элементов в объекте jQuery
:
$("*").unbind(); // Удалит все обработчики событий из всех элементов!
При вызове с единственным строковым аргументом он удалит все обработчики указанного типа события (или типов, если строка содержит несколько имен) из всех выбранных элементов в объекте jQuery
:
// Удалить все обработчики событий mouseover и mouseout во всех элементах <а>
$('а').unbind("mouseover mouseout");
Это не самый лучший подход, и его не следует использовать при разработке модулей, потому что пользователь модуля может использовать другие модули, регистрирующие свои собственные обработчики этих же типов событий в тех же элементах. Однако если модуль будет регистрировать обработчики событий с использованием пространств имен, можно будет использовать эту версию вызова метода unbind()
с одним аргументом для удаления только обработчиков события из вашего пространства или пространств имен:
// Удалить все обработчики событий mouseover и mouseout в пространстве имен "myMod"
$('а').unbind("mouseover.myMod mouseout.myMod");
// Удалить только обработчики событий из пространства имен myMod
$( a').unbind(”.myMod”);
// Удалить обработчик события click из пространств имен "ns1" и "ns2"
$('а').unbind("click.ns1.ns2");
Если потребуется удалить только те обработчики событий, которые были зарегистрированы вами, и вы не использовали пространства имен, вы должны получить ссылки на функции обработчиков событий и использовать версию вызова метода unbind()
с двумя аргументами. В этом случае в первом аргументе передается строка с типом события (без указания пространств имен), а во втором - функция-обработчик:
$('flmybutton').unbind('click', myClickHandler);
При вызове метода unbind()
таким способом он удалит указанный обработчик указанного типа (или типов) события из всех выбранных элементов в объекте jQuery
. Обратите внимание, что обработчики событий могут удаляться версией метода unbind()
с двумя аргументами, даже когда они были зарегистрированы с дополнительными данными, с помощью версии метода bind(),
принимающей три аргумента.
Методу unbind()
можно также передавать объект в единственном аргументе. В этом случае метод unbind()
будет вызываться рекурсивно для каждого свойства объекта. Имена свойств этого объекта должны определять типы событий, а значения -функции обработчиков:
$('а').unbind({ // Удалить конкретные обработчики событий mouseover и mouseout
mouseover: mouseoverHandler.
mouseout: mouseoutHandle г
});
Наконец, существует еще один способ вызова метода unbind().
Если передать ему объект Event
, созданный библиотекой jQuery, он удалит обработчики событий, которым будет передано это событие. Вызов unbind(ev)
эквивалентен вызову unbind(ev.type, ev.handler)
.
- 19.4.1. Простые методы регистрации обработчиков событий
- 19.4.2. Обработчики событий в библиотеке jQuery
- 19.4.3. Объект Event в библиотеке jQuery
- 19.4.4. Дополнительные способы регистрации обработчиков событий
- 19.4.5. Удаление обработчиков событий
- 19.4.6. Возбуждение событий
- 19.4.7. Реализация собственных событий
- 19.4.8. Динамические события
- 17.3. Вызов обработчиков событий
- 19.4. Обработка событий с помощью библиотеки jQuery
- Привязка и удаление обработчиков событий
- Прием поступающих событий
- Обработка событий
- 19.4.2. Обработчики событий в библиотеке jQuery
- Раздел VII Левиафан в Сети: защита права на тайну частной жизни после событий 2013 г.
- Расширение механизма событий
- Удаление шаблонов узлов STP
- Удаление учебного узла
- Удаление файлов занятий
- Удаление узла