Здесь происходит то, что jQuery захватывает значение this
в анонимной функции, используемой в качестве обработчика для события click.Это немного сбивает с толку, но поведение jQuery заключается в назначении элемента DOM, который вызвал событие, на this
.Существует несколько способов явно установить значение this
(«контекст») для функции обратного вызова:
- Function.prototype.bind - часть стандарта ECMAScript 5, только начинающаябыть реализовано в браузерах.Для поддержки прежних версий вы можете извлечь ее из библиотеки Prototype.
- $. Proxy - дерьмовый эквивалент jQuery для Function.prototype.bind, который был представлен в jQuery 1.4.
Iнаписал пару постов в моем блоге, которые объясняют их более подробно, если вам интересно:
В обоих случаях, поскольку this
теперь будет вашим объектом, а не инициирующим элементом DOM, вы можете получить инициирующий элемент DOMпутем проверки объекта события, который будет вторым параметром для вашей функции обратного вызова.