単一のメソッドを使用して JavaScript でクラスを定義しました。
function MyClass(text) {
this.text = text;
}
MyClass.prototype.showText = function() {
alert(this.text);
}
次に、jQuery を使用して、クリック イベントのハンドラーとして機能するメソッドを定義しました。
function MyClass(text) {
this.text = text;
$('#myButton').click(this.button_click);
}
MyClass.prototype.showText = function() {
alert(this.text);
};
MyClass.prototype.button_click = function() {
this.showText();
};
ボタンをクリックすると、次のように言って失敗します:
オブジェクト #<HTMLInputElement> にはメソッド 'showText' がありません
jQueryのクリックイベントハンドラはHTML要素そのものを参照しており、オブジェクトthis
のインスタンスを参照していないようです。MyClass
どうすればこの状況を解決できますか?
利用可能な jsFiddle: http://jsfiddle.net/wLH8J/