3

コンテンツにリンクがあるjQuery uiウィジェットがあります

 <a href="test" data-foo="clickThis">Click me</a>

関数では、_createクリックイベントハンドラーをアタッチし、インスタンス変数を作成します

_create: function () {
   //*this* here refers to widget
   this.$elem.on('click', 'a[data-foo]', this._clickHandler);
   this.instanceVariable = "someValue";
}

_clickHandler: function (event) {
   //**this** in here refers to link, not to widget
   //Question: How to call _otherPrivateFunction from here 
}

_otherPrivateFunction(){
  //I want to access this.instanceVariable in here
}

1 つのページにウィジェットの複数のインスタンスがあるため、それぞれが独自の instanceVariable にアクセスする必要があります。これを行うために私が見つけた1つの方法は、クリックハンドラーに渡すthisことevent.dataですが、これは単なる回避策であるため、この解決策は好きではありません。

this.$elem.on('click', 'a[data-foo]', this, this._clickHandler);

より良い解決策をいただければ幸いです。

4

1 に答える 1

5

$.proxy()を使用してカスタム実行コンテキストをクリック ハンドラーに渡すことができます。その後、イベント ハンドラー内でウィジェットがポイントされるため、ハンドラー メソッドからthis呼び出すことができます。this._otherPrivateFunction()

this.$elem.on('click', 'a[data-foo]', $.proxy(this._clickHandler, this));
于 2013-08-18T09:23:31.740 に答える