Если вы хотите, чтобы отвязать только конкретное событие, которое вы можете использовать что-то вроде этого:
addSendCommentButton : function(event) {
this.$el.off('click.delegateEvents' + this.cid, 'textarea');
}
Ba ckbone присоединяет события, используя jQuery on
с определенным пространством имен delegateEvents
плюс cid
.
Я боюсь, что это также отвязывает события из других текстовых областей. Это объясняется тем, что метод off
нужен один и тот же селектор, что переданный on
, как сказано в документации JQuery:
Для удаления определенных делегированных обработчиков событий, обеспечить селектор аргумент. Строка селектора должна точно соответствовать той, которая была передана в .on(), когда обработчик события был присоединен.
Предложение
Вы можете иметь подобное поведение меняется немного код:
var StreamView = Backbone.View.extend({
el: "#stream",
events: {
"click textarea.unfinished" : "addSendCommentButton"
},
addSendCommentButton : function(event) {
$(event.target).removeClass("unfinished");
}
});
Используйте более конкретный селектор, чтобы прикрепить событие и удалить этот класс, когда обратный вызов называется.
Сначала оль все thx для ответа. К сожалению, он также отвязывает события от других компонентов textarea. Обратите внимание, что StreamView содержит много компонентов textarea («#stream» div содержит много текстовых областей). – syllepsa
@syllepsa проверить отредактированный –
Это работает. Спасибо. К сожалению, я не могу голосовать (голосование требует 15 очков репутации). – syllepsa