2012-01-10 41 views
0

所以我有一個函數,我希望能夠通過引用匿名函數來創建和刪除函數。我想這樣做是爲了爲多個對象創建相同的功能。目前,當我創建一個函數,然後創建另一個函數時,我相信它會覆蓋最新的引用,並且不允許我刪除舊的引用。AddEventListener對匿名函數的動態函數引用

所以我想用這樣的東西動態地創建一個變量的引用。

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

,然後將其刪除這樣

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

我一定要創造TileClicked變量或怎麼會一個去呢?

回答

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 2012-01-10 11:58:57

+0

上面的代碼中的第二行將函數(動態創建並保存)設置爲'functionMap'對象的屬性,您可以使用它來'命名'它(即,您不需要其他名稱等號)。 – sje397 2012-01-10 12:20:09

+0

是的,但是addEventListener是非常奇怪的事實,它採用不同的函數實例image.addEventListener(「click」,funtionMap,false);將工作,但是當你使用類似於:image.addEventListener(「click」,funtionMap(this),false);它將無法正常工作,因此我使用匿名函數。想想你正在做同樣的事情。 – Lordphartmore 2012-01-10 14:34:08