当我点击某些内容时,我想对该元素做一些事情(即添加一个课程),但我并不相信这个'这个'我的事件处理程序中的元素实际上是该元素。以下是我的代码示例:
var ApplicationRouter = Backbone.Router.extend({
routes: {
"": "home",
"firstthing": "firstthing",
},
firstthing: function() {
$(this).addClass('active');
}
});
var ApplicationView = Backbone.View.extend({
el: $('body'),
events: {
'click #something': 'displayFirstThing'
},
initialize: function(){
this.router = new ApplicationRouter();
Backbone.history.start();
},
displayFirstThing: function(){
this.router.navigate("firstthing", true);
},
});
new ApplicationView();
我想要添加“活跃”的课程。到#something。我会有更多的活动会有不同的课程等,但现在想要了解一些基础知识。
另外,接受有关代码结构的任何建议!
答案 0 :(得分:2)
Backbone将事件对象作为回调的第一个参数传递给您,您可以使用currentTarget
属性来处理接收事件的元素。 E.g。
var ApplicationView = Backbone.View.extend({
el: $('body'),
events: {
'click #something': 'displayFirstThing'
},
// ... other code
displayFirstThing: function( event ){
$( event.currentTarget ).addClass( 'active' );
},
});
答案 1 :(得分:0)
我建议您在视图属性中存储要访问的元素。
即
var ApplicationView = Backbone.View.extend({
el: $('body'),
events: {
'click #something': 'displayFirstThing'
},
render: function() {
// render the view
// store the link element in a property
this.$something = this.$('#something');
},
displayFirstThing: function(){
this.$something.addClass('someclass');
},
});