在backbone.js视图中使用当前的jQuery元素

时间:2012-05-11 16:50:41

标签: javascript backbone.js

我放慢了对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“);”

3 个答案:

答案 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();
}