На этом шаге мы рассмотрим метод, используемый для удаления обработчика события.
Существуют ситуации, когда бывает необходимо убрать обработчик события, зарегистрированный ранее. Это может быть обусловлено существенным изменением страницы, когда действие, предусматриваемое обработчиком, теряет смысл. Обычно подобные ситуации можно разрешить с помощью условных инструкций в обработчиках, но гораздо элегантнее вообще отключить обработчик.
Предположим, нам необходимо, чтобы наш переключатель стилей оставался развернутым всегда, когда используется стиль, отличный от обычного. Иначе говоря, когда выбрана кнопка Суженный или Увеличенный, щелчок в области переключателя не должен вызывать никаких действий. Реализовать это можно вызовом метода .unbind(), который отключит обработчик, сворачивающий переключатель при выполнении щелчка на одной из кнопок переключателя, определяющих стиль оформления, отличный от стиля по умолчанию.
$(document).ready(function() { $('#switcher').click(function(event) { if (!$(event.target).is('.button')) { $('#switcher .button').toggleClass('hidden'); } }); $('#switcher-narrow, #switcher-large').click(function() { $('#switcher').unbind('click'); }); });
Рис.1. Отключение обработчика события
Полный текст этого примера можно взять здесь.Теперь, когда пользователь щелкнет на кнопке, такой как Суженный, обработчик события click элемента <div> переключателя стилей будет отключен, в результате чего щелчок мышью в области переключателя не будет приводить к его сворачиванию. Однако после этого кнопки перестанут работать! Кнопки тоже подключены к обработчику события click элемента <div> переключателя стилей, поскольку мы переписали программный код с использованием в нем приема делегирования события. Это означает, что вызов метода $('#switcher' ).unbind('click') отключит и обработку событий в кнопках.
На следующем шаге мы рассмотрим пространство имен события.