在Backbone应用程序中,我为集合中的每个模型实例化一个视图。
如果单击其中一个视图,我想调用一个函数。
不幸的是,该函数被称为 n 次,其中 n 是实例化的模型/视图的数量。我已经设法通过查找已点击的元素来解决这个问题,但我仍然不知道在同一时刻可能会触发一次200多次事件。
事件的结合如下:
var Item = Backbone.View.extend({
events: {
'click .list-group-item': function(event) { this.doSomething(event); },
},
doSomething: function(event) {
$(event.currentTarget).toggleClass('active');
},
});
在上面的代码中,您还可以使用event.currentTarget
查看我的解决方法,但我该如何避免这种情况?有没有办法区分.list-group-item
元素而不诉诸event.currentTarget
,那么在点击元素的那一刻,这是不是更好?
另一种方法是将事件绑定到父元素,因此只触发一次然后使用event.currentTarget
,但这对我来说似乎有点可疑。
答案 0 :(得分:0)
由于您希望附加到视图中任意位置的单击,因此您无需指定.list-group-item
。此外,您只需指定事件回调函数的名称:
var Item = Backbone.View.extend({
events: {
'click': 'doSomething'
},
doSomething: function(event) {
$(event.currentTarget).toggleClass('active');
},
});