1

我正在放慢掌握backbone.js的窍门,但我遇到了一些束缚。我已经成功创建了一个视图,并且能够将事件委托给 DOM 中的元素,但是我似乎能够$(this)在以下上下文中使用 jQuery“”

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

4

3 回答 3

3

在 的上下文中loadPagethis已绑定到您的Chrono.Views.Sidebar实例。但是,您可以通过 获取触发事件的 DOM 元素event.currentTarget。如果您将函数更新为如下所示,它应该可以工作:

loadPage: function(event) {
    var url = $(event.currentTarget).attr("href");
    alert(url);
    event.preventDefault();
}
于 2012-05-11T16:56:20.583 回答
2

在主干中,它绑定到视图,但您仍然可以通过检查 event.target 或使用 event.currentTarget 绑定事件的元素来获取单击的元素。

看看这个问题 Backbone.js Event Binding

于 2012-05-11T16:59:27.243 回答
0

this绑定到视图,因此您可以View.$el直接访问该属性。

loadPage: function(event) {
    var url = this.$el.find('.push-to').attr('href');
    alert(url);
    event.preventDefault();
}
于 2012-05-11T17:34:05.847 回答