ホテルを選ぶとき、これだけは譲れない条件TOP3は?

Javascriptを勉強中です。
オブジェクト指向プログラミングを習得しようと努力しております。

あるHTML要素(例ではelm)にクリックイベントを付加する際、オブジェクト内のmyFuncを呼ぶのに以下のようにthis.myFuncとすると、thisがHTML要素となるためにエラーが出ます。
elm.addEventListener("click", this.myFunc, false);
これを回避する目的で
elm.addEventListener("click", (function(that) { return function() { that.myFunc(); } } )(this), false);
とオブジェクト内からクロージャを使って定義することで解決することは分かったのですが、このイベントを削除するのに、
elm.removeEventListener("click", (function(that) { return function() { that.myFunc(); } } )(this), false);

elm.removeEventListener("click", function() { that.myFunc(); }, false);
としても除去することが出来ません。この場合はどのようにイベントを削除することが出来るのでしょうか?
そもそもクロージャを使った定義部分に問題があるのでしょうか?
どうぞ教えていただきますようお願いいたします。

A 回答 (11件中11~11件)

elm.addEventListener("click", (function(that) { return function() { that.myFunc(); } } )(this), false);


をやった時点でここに登録されたイベント関数は名前無しになります

素直に
elm.addEventListener("click", hoge);
function hoge(obj) {
色々;
}
elm.removeEventListener("click", hoge);
ではだめですか?
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。もう少しOOPにこだわりたいと思います。

お礼日時:2009/10/23 11:15

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報