# Объект event

Объект `event` генерируется при срабатывании события и содержит информацию о нем. При появлении события объект `event` передается в функцию-обработчик.

## Свойства и методы объекта event

Ниже в таблице указаны свойства и методы объекта `event` и их описание:

Название | Описание
--- | ---
`event.currentTarget` | Текущий DOM элемент на стадии всплытия события. Обычно это свойство эквивалентно `this` функции.
`event.data` | Необязательный параметр. Объект данных, передаваемый в метод события при прикреплении исполняемого обработчика.
`event.delegateTarget` | Элемент, к которому был прикреплен только что вызванный jQuery обработчик события. Это свойство наиболее полезно в делегированных событиях, когда обработчик привязан к предку обрабатываемого элемента. Для неделегированных обработчиков, привязанных непосредственно к элементу, значение `event.delegateTarget` соотвествует значению `event.currentTarget`.
`event.isDefaultPrevented` | Метод проверяет был ли вызван метод `event.preventDefault` для этого объекта события.
`event.isImmediatePropagationStopped` | Метод проверяет был ли вызван метод `event.stopImmediatePropagation` для этого объекта события.
`event.isPropagationStopped` | Метод проверяет был ли вызван метод `event.stopPropagation` для этого объекта события.
`event.isPropagationStopped` | Метод проверяет был ли вызван метод `event.stopPropagation` для этого объекта события.
`event.metaKey` | Метод проверяет была ли нажата клавиша `META` на момент срабатывания события. В зависимости от платформы клавиша может отличаться. Возвращает `true` или `false`.
`event.namespace` | Пространство имен, указанное на момент вызова события. Данное свойство окажется полезным для авторов плагинов, задачи которых зависят от используемого пространства имен.
`event.pageX` | Показывает позицию мыши относительно левого края документа.
`event.pageY` | Показывает позицию мыши относительно верхнего края документа.
`event.preventDefault` | Если данный метод вызван, то действие по умолчанию для данного события не будет выполняться. К примеру нажатие на ссылку не приведет к переходу на новый URL. Для того, чтобы проверить был ли вызван этот метод, можно использовать метод `event.isDefaultPrevented`.
`event.relatedTarget` | Возвращает другой DOM элемент, учавствующий в событии, если таковой имеется. Для `mouseout` показывает на какой элемент наведена мышь, для `mouseover` с какого элемента курсор мыши был отведен.
`event.result` | Последнее значение, которое вернул обработчик сработавшего события, не равное `undefined`. Свойство может быть полезно для получения значений собственных событий.
`event.stopImmediatePropagation` | Оменяет работу всех оставшихся обработчиков событий, связанных с элементом и предотращает всплытие события вверх по DOM дереву. Чтобы просто запретить событию всплывать до элементов-предков, но разрешить работу других обработчиков событий, можно использовать метод `event.stopPropagation`. Используйте метод `event.isImmediatePropagationStopped`, чтобы проверить был ли вызван `event.stopImmediatePropagation` для данного объекта события.
`event.stopPropagation` | Предотвращает всплытие события вверх по DOM дереву. Помните, что другие обработчики продолжат работать для данного элемента. Этот метод работает для собственных событий, вызванных с помощью метода `trigger`. Чтобы проверить был ли вызван этот метод, используйте `event.isPropagationStopped`.
`event.target` | DOM элемент, инициировавший событие. Это может быть элемент зарегистрированный для события или его потомок. Очень полезно сравнивать `event.target` и `this`, для определения всплытия события. Свойство полезно при делегировании события, когда события всплывают.
`event.timeStamp` | Разница во времени в миллисекундах между моментами создания события браузером и 1 Января 1970 года. Свойство может быть полезным при определении производительности события путем получения разницы значений `event.timeStamp` для двух моментов времени в коде. Если вы просто хотите получить текущее время внутри обработчика события, используйте метод `getTime`.
`event.type` | В данном свойстве указан тип события.
`event.which` | Данное свойство указывает какая клавиша клавиатуры или мыши была нажата. Для мыши: `1` - левая кнопка, `2` - колесико, `3` - правая кнопка. Используйте `event.which` вместо `event.button`.

## Другие свойства объекта event

Есть и другие свойства, которые копируются в объект `event`:

`altKey`, `button`, `buttons`, `cancelable`, `char`, `charCode`, `clientX`, `clientY`, `ctrlKey`, `detail`, `eventPhase`, `key`, `keyCode`, `offsetX`, `offsetY`, `originalTarget`, `screenX`, `screenY`, `shiftKey`, `toElement`, `view`.

Чтобы получить доступ к свойствам, не перечисленным выше, можно воспользоваться объектом `event.originalEvent`.

## Пример

Давайте будем выводить в див - какие клавиши были нажаты:

`<input id="test" value="type something"> <div id="text"></div>` `$('#test').on('keydown', function(event) { $('#text').html(event.type + ": " + event.which); });`

## Пример

Давайте будем выводить в див - на какой тег мы будем кликать:

`<body> <div id="text"></div> <div> <p> <strong><span>click</span></strong> </p> </div> </body>` `span, strong, p { display: block; padding: 10px; border: 1px solid black; }` `$('body').click(function(event) { $('#text').html('clicked: ' + event.target.nodeName); });`

## Смотрите также

- метод `on`,
  который позволяет привязать обработчик событий к элементу
- метод `trigger`,
  который позволяет запустить все обработчики событий, привязанные к элементу для событий заданного типа
- метод `triggerHandler`,
  который позволяет запустить все обработчики событий, привязанные к элементу
- события jQuery

←→
↑