2012-05-11 9 views
1

遅くなってbackbone.jsのハングアップが発生しましたが、私は少しバインドしました。 は私が成功したビューを作成し、DOMの要素にイベントを委任することができていました、しかし、私は、次の文脈で「$(this)」のjQueryを使用できるように見えることができbackbone.jsビューで現在の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 ");"

答えて

3

loadPageのコンテキストでは、thisChrono.Views.Sidebarインスタンスにバインドされています。ただし、イベントがトリガーされたDOM要素はevent.currentTargetで取得できます。このバックボーンで

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

がビューにバインドされていますが、まだevent.targetまたは要素のことをチェックすることによって、クリックされた要素を取得することができます:あなたはこのように見えるためにあなたの機能を更新した場合はそれが動作するはずですイベントはevent.currentTargetを使用してバインドされました。

は、ビューにバインドされているこの質問 Backbone.js Event Binding

0

thisを見てみましょう、あなたは直接View.$elプロパティにアクセスすることができます。

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