1

backback.jsのコツをつかむのが遅くなっていますが、私は少しバインドに遭遇しました。$(this)ビューを正常に作成し、イベントをDOMの要素に委任できますが、次のコンテキストで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

のコンテキストではloadPage、インスタンスthisにバインドされてい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イベントバインディング

于 2012-05-11T16:59:27.243 に答える
0

thisView.$elビューにバインドされているため、プロパティに直接アクセスできます。

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