主干点击事件:只在实际点击的元素上触发
Backbone click event: Trigger only on element actually clicked on
在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
,但这对我来说似乎也有点可疑。
由于您想要附加到视图中的任何位置的单击,因此不需要指定.list-group-item
。另外,您只需要指定事件回调函数的名称:
var Item = Backbone.View.extend({
events: {
'click': 'doSomething'
},
doSomething: function(event) {
$(event.currentTarget).toggleClass('active');
},
});
相关文章:
- 元素事件处理程序到EXT.js面板中
- 浏览器中的javascript和td元素事件属性
- 主干清理元素事件
- 影响类的所有成员而不是一个元素事件的插件正在发生
- AngularJS - ngRepeat.在 ng 重复重新渲染后,需要将焦点集中在相同的元素事件上
- 在jQuery中,如何触发mootools中添加的元素事件
- 允许 Raphael/SVG 元素事件通过顶部分层的 HTML 触发
- CanJS未来元素事件绑定
- 重新选择所选选项时,Javascript/jQuery选择元素事件
- 类变量在元素事件中不可见
- 修改元素'事件函数的参数
- 如何过滤掉事件处理程序中的子元素事件
- 要求Javascript关注多个元素事件的模式
- 允许先触发其他绑定元素事件
- Firefox扩展不能覆盖元素事件
- 如何获取"mouseup"之后的元素事件完成
- 用于文档防止元素事件的Onclick事件
- 如何获取触发“onclick”的元素事件
- 向由子元素事件触发的表单元格添加类/从中删除类
- JavaScript在元素加载后立即绑定元素事件