Вход/Регистрация
JavaScript. Подробное руководство, 6-е издание
вернуться

Флэнаган Дэвид

Шрифт:

Кроме того, метод

bind
обладает еще одной дополнительной особенностью. Если в первом аргументе передать список типов событий, разделенных пробелами, то функция обработчика будет зарегистрирована для всех указанных типов событий. Вызов
$('a').hover(f)
(раздел 19.4.1), например, эквивалентен вызову:

$('а').bind('mouseenter mouseleave', f);

Еще одной важной особенностью метода

bind
является возможность указать при регистрации пространство (или пространства) имен для обработчиков событий. Это дает возможность определить группу обработчиков событий, что может пригодиться, когда позднее потребуется переключать или удалять обработчики из определенного пространства имен. Поддержка пространств имен для обработчиков особенно удобна для тех, кто пишет библиотеки или модули, использующие библиотеку jQuery. Пространства имен событий подобны селекторам CSS-классов. Чтобы связать обработчик события с определенным пространством имен, добавьте точку и имя пространства имен после типа события:

// Связать f, как обработчик события mouseover в пространстве имен "myMod"

// ко всем элементам <а>

$('а').bind('mouseover.myMod', f);

Имеется даже возможность связать обработчик с несколькими пространствами имен, например:

// Связать f, как обработчик события mouseout в пространствах имен "myMod" и "yourMod"

$('a').bind('mouseout.myMod.yourMod', f);

Последней особенностью метода

bind
является возможность передать ему в первом аргументе объект, отображающий имена событий в функции обработчиков. Возьмем еще раз в качестве примера метод
hover.
Вызов $("a").hover(f,g)
эквивалентен вызову:

$('а').bind({mouseenter:f, mouseleave:g});

При использовании этой формы метода

bind
именами свойств передаваемого ему объекта могут быть строки со списками типов событий, разделенных запятыми, включающими пространства имен. Если в этом случае передать второй аргумент, его значение будет использоваться как дополнительные данные для всех связанных обработчиков.

Библиотека jQuery имеет еще один метод регистрации обработчиков. Метод

опе
вызывается и действует подобно методу
bind,
за исключением того, что зарегистрированный с его помощью обработчик события автоматически удаляется после первого вызова. То есть, как следует из имени метода, обработчики событий, зарегистрированные с помощью
опе,
никогда не вызываются более одного раза.

Единственное, чем не обладают методы

bind
и
опе,
– это возможность регистрации перехватывающих обработчиков событий, которая поддерживается методом
addEventListener
(раздел 17.2.3). IE (до версии IE9) не поддерживает перехватывающие обработчики, и библиотека jQuery не пытается имитировать эту особенность.

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"

  • Читать дальше
  • 1
  • ...
  • 355
  • 356
  • 357
  • 358
  • 359
  • 360
  • 361
  • 362
  • 363
  • 364
  • 365
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: