Шаг 44.
Библиотека jQuery.
Удаление обработчика события. Пространство имен события

    На этом шаге мы рассмотрим использование пространства имен события.

    Нам необходимо придать вызову метода .unbind() более высокую избирательность, чтобы он не отключал оба зарегистрированных обработчика события click. Один из способов сделать это заключается в определении пространства имен событий. При подключении обработчика мы можем указать дополнительную информацию, которая позднее позволит идентифицировать отдельные обработчики. Чтобы задействовать пространство имен, необходимо вернуться к использованию универсального метода .bind() подключения обработчиков.

    Первым параметром методу .bind() передается имя события JavaScript, которое требуется обработать. Однако здесь допускается использование специального синтаксиса, позволяющего определять подкатегории событий.

 $(document).ready(function() {
   $('#switcher').bind('click.collapse', function(event) {
     if (!$(event.target).is('.button')) {
       $('#switcher .button').toggleClass('hidden');
     }
   });
   
   $('#switcher-narrow, #switcher-large').click(function() {
     $('#switcher').unbind('click.collapse');
   });
 });

Рис.1. Кнопки снова работают

Полный текст этого примера можно взять здесь.

    Расширение .collapse недоступно системе обработки событий; события click обрабатываются данной функцией точно так же, как если бы мы записали вызов .bind('click'). Однако добавление пространства имен означает, что мы можем отключать именно этот обработчик, не оказывая влияния на обработчик события click для кнопок.


   Примечание. Существуют и другие способы повышения избирательности метода .unbind(), с которыми мы познакомимся чуть дальше. Однако такой инструмент, как определение пространств имен для событий, полезно иметь в своем арсенале. Он особенно удобен при создании модулей расширения, в чем мы позже.

    На следующем шаге мы рассмотрим повторное подключение событий.




Предыдущий шаг Содержание Следующий шаг