骨干点击事件:仅在实际点击的元素上触发

时间:2015-10-11 21:29:12

标签: javascript jquery backbone.js mouseclick-event

在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,但这对我来说似乎有点可疑。

1 个答案:

答案 0 :(得分:0)

由于您希望附加到视图中任意位置的单击,因此您无需指定.list-group-item。此外,您只需指定事件回调函数的名称:

var Item = Backbone.View.extend({
  events: {
    'click': 'doSomething'
  },

  doSomething: function(event) {
    $(event.currentTarget).toggleClass('active');
  },
});