JavaScript event.currentTarget против этого - PullRequest
6 голосов
/ 26 февраля 2011

Есть ли разница между event.currentTarget и this? А как насчет производительности?

Ответы [ 2 ]

2 голосов
/ 26 февраля 2011

Атрибут события currentTarget возвращает элемент, чьи прослушиватели событий вызвали событие.Это особенно полезно во время захвата и образования пузырьков.

Вы также можете использовать ключевое слово this, но при использовании модели регистрации событий Microsoft ключевое слово this не ссылается на элемент HTML.

Для получения дополнительной информации см. Следующую ссылку: http://www.quirksmode.org/js/events_order.html

* Проблемы в режиме Microsoft * l

Но при использовании события MicrosoftМодель регистрации это ключевое слово не относится к элементу HTML.В сочетании с отсутствием свойства currentTarget-подобного в модели Microsoft это означает, что если вы выполните

element1.attachEvent('onclick',doSomething)
element2.attachEvent('onclick',doSomething)

, вы не сможете узнать, какой элемент HTML в настоящее время обрабатывает событие.Это самая серьезная проблема с моделью регистрации событий Microsoft, и для меня это достаточная причина, чтобы никогда не использовать ее, даже в приложениях только для IE / Win.*

0 голосов
/ 16 октября 2016

В документации jQuery четко сказано, что event.currentTarget в большинстве случаев равно this (если вы не изменяете область вручную с помощью jQuery.proxy или аналогичной):

Это свойство обычно равно значению этой функции.

Если вы используете jQuery.proxy или другую форму манипуляции с областью действия, this будет соответствовать любому предоставленному вами контексту, а не event.currentTarget

https://api.jquery.com/event.currentTarget/

...