나는 backbone.js보기에 의해 생성 된 div
을 가지고 있습니다. 사용자가 div
을 클릭하면 active
클래스가 div
에 추가되고 addToSet
함수가 실행됩니다.보기가 특정 클래스 (backbone.js)를 가지고있는 경우 클릭시 트리거 기능
문제 :보기의 div
에 active
클래스가있을 때 다른 기능이 실행되기를 원합니다. 그러나 아래에 표시된 시도는 클릭했을 때 항상 실행되는 addToSet
기능을 발생시킵니다.
events
함수에서 'click': 'addToSet'
을 제거하고, 단지 'click .active': 'removeFromSet'
로 남겨 둡니다. div
을 클릭해도 아무런 일도 일어나지 않습니다! 이것은 이벤트 처리기가 뷰 내부의 요소 인 div
을 선택할 수 없기 때문입니까?
이 문제를 어떻게 해결할 수 있습니까? 감사!
JS 코드
SetView = Backbone.View.extend({
tagName: 'div',
className: 'modal_addit_set',
template: _.template($('#tpl_modal_addit_set').html()),
events: {
'click': 'addToSet',
'click .active': 'removeFromSet'
},
initialize: function(opts) {
this.post_id = opts.post_id;
},
render: function() {
$(this.el).html(this.template(this.model.toJSON()));
if(this.model.get('already_added'))
$(this.el).addClass('active');
return this;
},
addToSet: function() {
$.post('api/add_to_set', {
post_id: this.post_id,
set_id: this.model.get('id'),
user_id: $('#user_id').val()
});
},
removeFromSet: function() {
$.post('api/remove_from_set', {
post_id: this.post_id,
set_id: this.model.get('id')
});
}
});
이것은 훨씬 더 좋고/깨끗한 해결책입니다. IMO :) –