2012-01-10 6 views
0

私は関数を持っているので、無名関数への参照で関数を作成して削除したいと考えています。私は、複数のオブジェクトに対して同じ関数を作成する機能を提供するためにこれを実行したいと思います。現在、ある関数を作成して別の関数を作成すると、参照を最新のものに上書きしていると考えられ、古い参照を削除することはできません。AddEventListenerダイナミック関数の参照匿名関数

私はこのような変数を使って参照を動的に作成したいと思います。

image.addEventListener("click", 
    (Highlight + image.alt) = function(){ HighLightClick(this) }, false); 

してから、この

TileClicked.removeEventListener("click", (Highlight + TileClicked.alt), false); 

のようにそれを削除し、私はTileClickedのための変数を作成しなければならないのか、どのように1本に行きますか?

答えて

0

たぶんのようなもの:

var functionMap = {}; 

funtionMap[Highlight + image.alt] = function(){ HighLightClick(this) }; 
image.addEventListener("click", funtionMap[Highlight + image.alt], false); 

TileClicked.removeEventListener("click", funcionMap[Highlight + TileClicked.alt], false); 
+0

は偽、私はあなたが image.addEventListener( "クリック"、FunctionMap = funtionMap [ハイライト+ image.alt]を動作するように、このようなものが必要知って動作するようには思えません); 等号を使用すると、参照を削除してもらうことができます。動的に作成して設定する方法を知っているだけで問題になります。 – Lordphartmore

+0

上記のコードの2行目は 'functionMap'オブジェクトのプロパティとして(関数を動的に作成して保存する)関数を設定します。これは '名前を付ける'ために使用できます(つまり、別の名前は必要ありません等号)。 – sje397

+0

しかし、addEventListenerは非常に奇妙です。事実、image.addEventListener( "click"、funtionMap、false); image.addEventListener( "click"、funtionMap(this)、false);などのようなものを使用すると動作します。それで私はなぜanon関数を使うのかが正しく動作しません。あなたのやり方で同じことが起こっていると思ってください。 – Lordphartmore