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'
},
这实际上是在 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));
我有一个包含以下代码的 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'
},
这实际上是在 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));