CSS backbone.js 中 jQuery.find 的等效选择器?

CSS Selector Equivalent Of jQuery.find in backbone.js?

我有一个包含以下代码的 Marionette 视图:

onRender: {
   $('#someDiv').find('a').click(function(){
     // some code here
   });
}

但我想重构为这样的东西:

events: {
  'click [selector here]': 'executeCode'
},

executeCode: function() {
    // some code here
}

这可能吗?

是的,使用 space

events: {
  'click #someDiv a': 'executeCode'
},

另外,参见 http://backbonejs.org/#View-delegateEvents

这实际上是在 Backbone 中绑定 DOM 事件处理程序的推荐方式。 Backbone 使用 jQuery on 方法(事件委托语法)在幕后绑定事件处理程序。

请注意,事件处理程序用于匹配视图元素的后代。如果 #someDiv 不是视图元素的后代,则事件处理程序将不起作用。

还应注意,处理程序上下文中的 this 指的是视图对象而不是事件的目标元素:

events: {
  'click #someDiv a': 'executeCode'
},

executeCode: function(event) {
   // `this` here refers to the View object 
   var clickedElement = event.currentTarget;
   // ...
}

上面的代码片段与下面的代码片段类似:

viewObject.$el.on('click', '#someDiv a', viewObject.executeCode.bind(viewObject));