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

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

本文关键字:选择器 CSS js jQuery find backbone      更新时间:2023-09-26

我有一个Marionette视图,它有以下代码:

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

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

events: {
  'click [selector here]': 'executeCode'
},
executeCode: function() {
    // some code here
}

这可能吗?

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

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

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

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));

是,使用空格

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

另请参阅http://backbonejs.org/#View-delegateEvents