【问题标题】:Using current jQuery element in backbone.js view在backbone.js 视图中使用当前的jQuery 元素
【发布时间】:2012-05-11 16:50:40
【问题描述】:

我正在慢慢掌握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");"

【问题讨论】:

    标签: javascript backbone.js


    【解决方案1】:

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

    loadPage: function(event) {
        var url = $(event.currentTarget).attr("href");
        alert(url);
        event.preventDefault();
    }
    

    【讨论】:

      【解决方案2】:

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

      看看这个问题 Backbone.js Event Binding

      【讨论】:

        【解决方案3】:

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

        loadPage: function(event) {
            var url = this.$el.find('.push-to').attr('href');
            alert(url);
            event.preventDefault();
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2013-01-28
          • 2013-05-23
          • 2014-06-06
          • 1970-01-01
          • 2016-02-18
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多