gpt4 book ai didi

javascript - 如果 View 具有某个类(backbone.js),则单击时触发函数

转载 作者:搜寻专家 更新时间:2023-11-01 05:06:33 24 4
gpt4 key购买 nike

我有一个由 backbone.js View 生成的 div。当用户点击这个 div 时,一个类 active 被添加到 div 并且函数 addToSet 被执行.

问题:我希望在 View 的 div 具有类 active 时触发另一个函数。但是,下面显示的我的尝试总是导致 addToSet 函数在单击时运行。

现在,我从 events 函数中删除 'click': 'addToSet',只留下 'click .active': 'removeFromSet'。点击 div 不会导致任何事情发生!这是因为事件处理程序无法选择 View 本身的 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')
});
}
});

最佳答案

您是否尝试过使用 :not(.active)您的一位事件代表的选择器?这可能有助于区分这两种情况。

像这样:

events: {
'click :not(.active)' : callback1
'click .active' : callback2
}

关于javascript - 如果 View 具有某个类(backbone.js),则单击时触发函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11621361/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com