Я создаю веб-приложение jQuery/javascript, используя jQuery .prototype
. В следующем коде я хочу обновить до прототипов глобальное значение this.score
, мне нужно будет bind(this)
, чтобы сделать эту работу.
Без привязки this
Я могу достичь пролета внутри btnElement
с $(this)
, но после привязки это больше не работает. Есть ли какое-либо обходное решение для чего-то вроде этого? ;)
showQuestion: function(question) {
this.quiz.show();
var btnElement = this.quiz.find('div');
btnElement.on('click', function() {
var btn = $(this).find('span');
if (btn.hasClass('correct')) {
btn.addClass('good');
this.score += 1;
} else {
$('span.correct').addClass('good');
btn.addClass('wrong');
}
}.bind(this));
}
Вместо 'e.target', это должно быть' e.delegateTarget', я думаю –
@ A.Wolff: Ooooh! Я всегда забываю о 'delegateTarget' jQuery! –
@ A.Wolff: Хотя на самом деле 'e.currentTarget' был бы наиболее подходящим, но я всегда забываю о' currentTarget', так что еще раз спасибо. Но да, 'e.delegateTarget' совпадает с' e.currentTarget' в не делегированном обработчике. –