私は、ユーザのやりとりに応じて時折メニューを再構築するオブジェクトを作成しようとしています。私がやっているやり方は、新しいメニュー項目を複製し、古いメニュー項目を削除することです。つまり、特定のクラスを持つdivの新しいインスタンスを導入するということです。つまり、このクラスに影響を与えるjQueryをリロードする必要があります。jQueryが動作していない同じobjのメソッドを呼び出す
以下の例では、メニュー項目をクリックすると「TypeError:this.objMethodは関数ではありません」という結果になります。
objMethodを呼び出すjQueryClickメソッドを取得するにはどうすればよいですか?私はこれがスコープの問題だと考えていますが、jQuery関数がそれを超えて見えるようにする方法を理解することはできません。
function myObj(){
this.jQueryClick = function(){
$('.menu-item').click(function(){
this.objMethod();
})
}
this.objMethod = function(){
alert('hounds released');
}
this.jQueryClick(); // will be called whenever the menu is rebuild
}
newObj = new myObj;
私はこのようにjQueryを使って外objMethodを呼び出す場合:
$('.menu-item').click(function(){
newObj.objMethod();
})
それは動作しますが、それは再構築だときにのみ初期メニューのために働くとしません。 jqueryのために
イベントを動的要素にバインドする方法を学ぶ必要があるようです(['jQuery.on'](http://api.jquery.com/on/)を参照) – Jamiec
あなたが正しいように見えます!私はいつも乱雑に見えると思ったオブジェクト自体にjQueryを統合するよりもはるかにエレガントなソリューションです。ありがとうチャンピオン:o) –
ちょっと涼しい。 probsはありません。申し訳ありませんが、私のコメントは(それを読み返す上で)少し鈍いものでした。 – Jamiec