Лучший способ справиться с изменением «это» - PullRequest
1 голос
/ 29 августа 2009

Проблема, с которой я регулярно сталкиваюсь при написании javascript с использованием jQuery, заключается в том, что когда метод объекта включает добавление прослушивателя события, «this» меняется с ссылки на объект на ссылку на элемент DOM, который вызвал событие .

В настоящее время, если я хочу обратиться к объекту из обработчика события, я делаю что-то вроде этого:

var theObject = this;
$('selector').click(function() {
   theObject.methodToApply();
   $(this).css('background','red');
});

Есть ли лучший способ справиться с тем фактом, что события всегда хотят переназначить 'this'

Ответы [ 2 ]

4 голосов
/ 29 августа 2009

То, что вы делаете, является стандартным способом решения этой проблемы в jQuery. Следующая версия jQuery даст вам возможность определить, каким должен быть этот контекст. Прочитайте Блог Brandons пост для получения дополнительной информации.

0 голосов
/ 30 августа 2009

Причина, по которой это изменяется, заключается в том, как работает область видимости javascript. Лучше понять эту фундаментальную концепцию, если вы хотите сделать что-то серьезное.

Объяснение этой концепции здесь:

jQuery / JavaScript путаница с указателем "this"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...