我放慢了对backbone.js的影响,但我遇到了一些绑定。
我已经成功创建了一个视图,并且能够将事件委托给DOM中的元素,但是我似乎能够在以下上下文中使用jQuery“$(this)
”
Chrono.Views.Sidebar = Backbone.View.extend({
//Page wrapper
el:"#wrapper",
//Delegate events to elements
events : {
"click .push-to":"loadPage"
},
loadPage: function(event) {
var url = $(this).attr("href");
alert(url);
event.preventDefault();
}
});
点击事件是拦截但是这行“var url = $(this).attr(”href“);”
答案 0 :(得分:3)
在loadPage
的上下文中,this
已绑定到您的Chrono.Views.Sidebar
实例。但是,您可以通过event.currentTarget
获取触发事件的DOM元素。如果您将函数更新为这样,它应该可以工作:
loadPage: function(event) {
var url = $(event.currentTarget).attr("href");
alert(url);
event.preventDefault();
}
答案 1 :(得分:2)
在骨干网中,它绑定到视图,但您仍然可以通过使用event.currentTarget检查event.target或事件绑定到的元素来获取被单击的元素。
看看这个问题 Backbone.js Event Binding
答案 2 :(得分:0)
this
绑定到视图,因此您可以直接访问View.$el
属性。
loadPage: function(event) {
var url = this.$el.find('.push-to').attr('href');
alert(url);
event.preventDefault();
}