2016-10-09 6 views
0

これをjQueryのイベントにバインドするにはどうすればよいですか?これをjQueryのイベントにバインドするにはどうすればいいですか?

例えば、以下push menuのために、私はvar rootthis 'を思い出す' する必要があります。

class PushMenu { 
    constructor() { 
     this.slideShown = false; 
     var root = this; 
     $('.navmenu').on('shown.bs.offcanvas', function() { 
      root.slideShown = true; 
     }); 
    } 
} 

しかし、私はそう、私はvar rootを持つ保存することができますthisをバインドすることができる場合、私は疑問に思う:

class PushMenu { 
    constructor() { 
     this.slideShown = false; 
     $('.navmenu').on('shown.bs.offcanvas', function() { 
      this.slideShown = true; 
     }); 
    } 
} 

これは可能ですか?

+0

で大丈夫です、このトンを割り当てる試しくださいoグローバル変数とその変数を代わりにバインドする。それがうまくいくかどうかはわかりません。 –

答えて

3

あなたはので、私はES6構文を想定ES6クラスを使用しているarrow function

$('.navmenu').on('shown.bs.offcanvas',() => { 
    this.slideShown = true; 
}); 
+0

この回答に感謝します。これは私が後にしたものです - ES6!ありがとうございました!! :-) – laukok

2

使用jQuery.proxy()

機能を取り、常に特定のコンテキストを持つことになり、新しいものを返します。

class PushMenu { 
    constructor() { 
     this.slideShown = false; 
     $('.navmenu').on('shown.bs.offcanvas', jQuery.proxy(function() { 
      this.slideShown = true; 
     }, this)); 
    } 
} 

これへの参照がPushMenuのオブジェクトの代わりに、イベントをトリガした要素を参照するように、我々はここでjQuery.proxyを使用することもできました。

ドキュメント

関連する問題