2009-07-10 10 views
0

私はJavascriptでいくつかのイベント処理を行っていましたが、最近PrototypeからjQueryに移行することに決めました。私はすでにPrototypeを使用していくつかの問題に遭遇しましたが、問題を少なくとも解決した回避策を見つけましたが、私にはうまく見えませんでした。とにかく私はすべてを書き直しています、私は外出先でそれをまっすぐにしたいと思います。可能であれば、この問題に関するいくつかの「ベストプラクティス」に関するアドバイスをお聞きしたいと思います。jQueryを使用した適切なイベント処理

簡単な説明:アイテムを選択できるようにするオブジェクトリストプロトタイプを作成しました(これは、動きのある他のものを設定します)。人生を楽にするために、私は、あなたがインクリメンタルな検索フィルタリングを行い、リストされたアイテムをソートすることを可能にする 'searchList'(私が書いた別のプロトタイプ)を採用しています。検索リストはobjectlistのメンバーです(下のコードで参照)。アイテムがクリックされた場合、検索リストは(カスタム)イベントをトリガし、オブジェクトリストはそれに応答する必要があります。私はそこ(Controlling the value of 'this' in a jQuery event)からthis同じにアクセスできるようにしたいよう

var self = this; 
$(this.searchList).bind('objectSelected', function() { 
    self.selectObject(self.searchList.getSelectedId()); 
}); 

はプロトタイプでは、私は、thisbind()コールバックに使用:今、私はこのアプローチを使用しています。しかし、jQueryはネイティブスコープバインディングをサポートしていないようで、おそらく理由があります。 'self -approach'は動作しますが、これは「良いコード」とみなされているのか、おそらく悪いプログラム設計の兆候なのかと思っていました。

init: function() { 
    var self = this; 
    this.searchList.observe('objectWasSelected', this.objectSelected.bind(this)); 
} 

objectSelected: function() { 
    this.selectObject(this.searchList.getSelectedId()); 
} 

それについて考えた後、それはsuperdumbに見えた:

はさらに、私は時々、この(:プロトタイプ-構文ノート)のように、コールバック「親」オブジェクトのメンバを作るために使用されます。だから、中核的な質問:私の新しいアプローチ(最上位コード、selfを使用)は本当に良いです、そしてもっと重要なのは、まだが良いでしょう?特に、良いプログラムデザインに関しては、自分のスキルを向上させるために常に探しています。だから誰もがこれを照らすことができれば、とても感謝しています!

答えて

0

自己はあなたが望むことを行うための標準的な方法です。次のjQueryリリースでは、このコンテキストを定義する機能が追加されています。here

関連する問題