Чтение онлайн

на главную - закладки

Жанры

JavaScript. Подробное руководство, 6-е издание
Шрифт:

$('а').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.6. Возбуждение событий

Зарегистрированные обработчики событий будут вызываться автоматически, когда пользователь начнет использовать мышь или клавиатуру или когда будут возникать события других типов. Однако иногда бывает полезно генерировать события вручную. Проще всего сделать это, вызвав один из простых методов регистрации обработчиков (такой как

click
или
mouseover
) без аргументов. Подобно многим методам объекта
jQuery
, которые могут играть роль методов чтения и записи, эти методы регистрируют обработчики событий, когда вызываются с аргументами, и запускают их, когда вызываются без аргументов. Например:

$("#my_form").submit; // Будет действовать, как если бы пользователь щелкнул

// на кнопке отправки формы

Метод

submit(
) в инструкции выше синтезирует объект
Event
и запустит все обработчики событий, которые были зарегистрированы для события «submit». Если ни один из этих обработчиков не вернет false или не вызовет метод
preventDefault
объекта
Event
, форма действительно будет отправлена. Обратите внимание, что события будут всплывать, даже если сгенерировать их вручную, как в данном примере. Это означает, что возбуждение события в множестве выбранных элементов может также привести к вызову обработчиков событий в предках этих элементов.

Важно отметить, что методы объекта

jQuery
, генерирующие события, будут запускать любые обработчики событий, зарегистрированные методами объекта
jQuery
, а также обработчики, объявленные в HTML-атрибутах или свойствах объектов
Element
, таких как
onsubmit
. Но с их помощью невозможно вручную запустить обработчики событий, зарегистрированные методом
addEventListener
или
attachEvent
(однако эти обработчики по-прежнему будут вызываться при возникновении настоящих событий).

Отметьте также, что механизм возбуждения событий в библиотеке jQuery является синхронным - в нем не используется очередь событий. Когда событие генерируется вручную, обработчики событий будут вызваны немедленно, до того как метод, возбудивший событие, вернет управление. Если вы генерируете событие «click» и один из запущенных обработчиков сгенерирует событие «submit», все обработчики события «submit» будут вызваны до того, как будет вызван следующий обработчик события «click».

Методы, такие как

submit,
удобно использовать для связывания и возбуждения событий; но как библиотека jQuery определяет более обобщенный метод
bind,
так же она определяет и более обобщенный метод
trigger.
Обычно при вызове в первом аргументе методу
trigger
передается строка с типом события, и он запускает обработчики, зарегистрированные для этого типа во всех выбранных элементах в объекте
jQuery
. То есть вызов
submit
в примере выше эквивалентен вызову:

$("#my_form").trigger("submit");

В отличие от методов

bind
и
unbind,
в вызове метода
trigger
нельзя указать более одного типа события в первом аргументе. Однако, подобно методам
bind
и
unbind,
он позволяет указывать пространства имен возбуждаемых событий» чтобы запустить только обработчики, зарегистрированные для этого пространства имен. Если потребуется запустить только обработчики событий, не привязанные ни к какому пространству имен, следует добавить в строку с типом события восклицательный знак. Обработчики, зарегистрированные посредством свойств, таких как
onclick
, считаются обработчиками, не привязанными к какому-либо пространству имен:

$("button").trigger("click.ns1"); // Запустит обработчики в пространстве имен

$("button").trigger("click!"); // Запустит обработчики, не привязанные

// к какому-либо пространству имен

Вместо строки с типом события в первом аргументе методу

trigger
можно передать объект
Event
(или любой другой объект, имеющий свойство
type
). Свойство
type
будет определять, какие обработчики должны запускаться. Если передать объект
Event
библиотеки jQuery, этот объект будет передан обработчикам. Если передать простой объект, автоматически будет создан новый объект
Event
библиотеки jQuery и в него будут добавлены свойства объекта, переданного методу. Это самый простой способ передать обработчикам событий дополнительные данные:

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

Катализ

Скаландис Ант
Фантастика:
научная фантастика
5.00
рейтинг книги
Катализ

Телохранитель Генсека. Том 2

Алмазный Петр
2. Медведев
Фантастика:
попаданцы
альтернативная история
6.25
рейтинг книги
Телохранитель Генсека. Том 2

Истребители. Трилогия

Поселягин Владимир Геннадьевич
Фантастика:
альтернативная история
7.30
рейтинг книги
Истребители. Трилогия

Газлайтер. Том 10

Володин Григорий
10. История Телепата
Фантастика:
боевая фантастика
5.00
рейтинг книги
Газлайтер. Том 10

На цепи

Уваров
1. На цепи
Старинная литература:
прочая старинная литература
5.00
рейтинг книги
На цепи

Старый, но крепкий 4

Крынов Макс
4. Культивация без насилия
Фантастика:
уся
фэнтези
5.00
рейтинг книги
Старый, но крепкий 4

Эволюционер из трущоб. Том 2

Панарин Антон
2. Эволюционер из трущоб
Фантастика:
космическая фантастика
попаданцы
5.00
рейтинг книги
Эволюционер из трущоб. Том 2

Геном хищника. Книга третья

Гарцевич Евгений Александрович
3. Я - Легенда!
Фантастика:
боевая фантастика
рпг
попаданцы
5.00
рейтинг книги
Геном хищника. Книга третья

Секретная история вампиров

Тертлдав Гарри Норман
Фантастика:
ужасы и мистика
альтернативная история
5.00
рейтинг книги
Секретная история вампиров

Последний Паладин. Том 4

Саваровский Роман
4. Путь Паладина
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Последний Паладин. Том 4

Наследие Маозари 2

Панежин Евгений
2. Наследие Маозари
Фантастика:
попаданцы
рпг
аниме
5.00
рейтинг книги
Наследие Маозари 2

Газлайтер. Том 29

Володин Григорий Григорьевич
29. История Телепата
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Газлайтер. Том 29

Первый среди равных

Бор Жорж
1. Первый среди Равных
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Первый среди равных

Я до сих пор царь. Книга XXXII

Дрейк Сириус
32. Дорогой барон!
Фантастика:
юмористическое фэнтези
аниме
попаданцы
5.00
рейтинг книги
Я до сих пор царь. Книга XXXII