Работа с функциями bind, unbind и объектом-событием

Дата публикации:Февраль 21, 2011

Мы проведем лишь краткий обзор представленных функций, поскольку их применение оправдано в довольно редких ситуациях. В случае острой необходимости, дополнительную информацию по данным функциям всегда можно отыскать в специальной литературе, посвященной jQuery.

Иногда вам понадобится получить более полный контроль над некоторыми событиями. Сделать это можно при помощи удобных функций bind() и unbind(). Вы можете передавать в них параметры, отвечающие за типы событий (click, mouseenter и др.), данные, а также обработчики событий (или вызывать другую функцию). Данные являются дополнительным параметром; их рассмотрение выходит за рамки этого курса.

.bind(event type, data, functionName) jQuery(«.post»).bind(«mouseenter», function(){//code}); Привязывает к выбранным элементам функцию, которая будет вызвана по заданному событию.
.unbind(event type, functionName) jQuery(«.post»).unbind(«mouseenter», function(){//code}); Удаляет обработку события у выбранных элементов.

В предыдущей статье мы реализовали эффект подсветки пунктов с помощью функции hover(). Теперь мы попробуем сделать то же самое с помощью функций bind() и unbind(). Данный способ является не самой изящной реализацией простого эффекта наведения — он слишком громоздкий. Однако иногда такое решение бывает востребовано.

Основное преимущество функции bind() состоит в том, что вы можете передавать в нее данные. В следующем примере мы передадим данные, а именно цвет нашего фона, в функцию события:

...
  jQuery(".widget-area li ul li").bind("mouseenter", {color: "#f60"}, 
function(event){
      jQuery(this).css("background", event.data.color);
         jQuery(this).unbind("mouseleave");
  });
  jQuery(".widget-area li ul li").bind("mouseleave", function(){
      jQuery(this).css("background", "none");
      jQuery(this).unbind("mouseenter");
  });
...

В предыдущем примере, для того чтобы передать данные, мы воспользовались объектом-событием. Объединенный объект-событие помогает передать информацию о возникшем событии в функцию, сохраняя исходный код понятным и чистым, что позволяет быстро отыскивать и устранять ошибки.

event.type Возвращает тип события (mouseenter, keyup и т.д.)
event.target Возвращает выбранный элемент, который инициировал событие.
event.data Возвращает дополнительные данные, переданные через функцию bind.
event.pageX, .pageY Определяет позицию курсора мыши относительно левого края (pageX) или верхнего края (pageY) документа.
event.result Возвращает последнее значение, которое было возвращено обработчиком событий. Полезно для поиска и устранения ошибок.
event.timeStamp Возвращает временную метку (timestamp) Unix, когда событие было инициировано.

Следующий код будет выводить атрибуты объекта-события по щелчку:

...
jQuery(".post").click(function(event){
    jQuery(this).html("event type: "+event.type+"<br/>event timestamp: 
"+event.timeStamp+"<br/>event x: "+event.pageX+"<br/>event y: "+event.
pageY);
});
...

Еще одна функция объекта-события, которая может оказаться полезной в дальнейшей работе — preventDefault(). Она может отменить стандартное действие элемента.

.preventDefault() jQuery(.post a).preventDefault(); Предотвращает выполнение стандартных действий, определенных браузером, для выбранных элементов.
.ispreventDefault() jQuery(.post a).ispreventDefault(); Возвращает истину или ложь, в зависимости от того, установлена или нет функция ispreventDefault на выбранном наборе элементов.
Поделиться

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

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