Nyx*_*nyx 4 javascript jquery backbone.js underscore.js
我有一个div由backbone.js视图生成的.当用户点击它时div,会向该类active添加一个类div并addToSet执行该函数.
问题:当View div有类时,我想要触发另一个函数active.但是,我在下面显示的尝试总是会导致addToSet函数在单击时运行.
现在,我'click': 'addToSet'从events功能中删除,只留下'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')
});
}
});
Run Code Online (Sandbox Code Playgroud)
小智 6
您是否尝试为其中一个事件代理使用:not(.active)选择器?这可能有助于区分这两种情况.
像这样的东西:
events: {
'click :not(.active)' : callback1
'click .active' : callback2
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4854 次 |
| 最近记录: |