3 回答

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超7個(gè)贊
這是因?yàn)閮蓚€(gè)匿名函數(shù)是完全不同的函數(shù)。您removeEventListener
的參數(shù)不是對(duì)先前附加的函數(shù)對(duì)象的引用。
function foo(event) { app.addSpot(event.clientX,event.clientY); app.addFlag = 1; } area.addEventListener('click',foo,true); area.removeEventListener('click',foo,true);

TA貢獻(xiàn)1998條經(jīng)驗(yàn) 獲得超6個(gè)贊
您在兩個(gè)調(diào)用中都創(chuàng)建了兩個(gè)不同的函數(shù)。因此第二個(gè)函數(shù)與第一個(gè)函數(shù)沒有任何關(guān)系,并且引擎能夠刪除該函數(shù)。請(qǐng)改為使用該功能的通用標(biāo)識(shí)符。
var handler = function(event) { app.addSpot(event.clientX,event.clientY); app.addFlag = 1; };area.addEventListener('click', handler,true);
之后你可以通過調(diào)用刪除處理程序
area.removeEventListener('click', handler,true);

TA貢獻(xiàn)1845條經(jīng)驗(yàn) 獲得超8個(gè)贊
如果要將局部變量傳遞給事件偵聽器調(diào)用的函數(shù),可以在函數(shù)內(nèi)部定義函數(shù)(以獲取局部變量)并在函數(shù)本身中傳遞函數(shù)的名稱。例如,讓我們從使用app作為局部變量添加事件監(jiān)聽器的函數(shù)內(nèi)部開始。你會(huì)在這個(gè)函數(shù)里寫一個(gè)函數(shù),比如
function yourFunction () { var app; function waitListen () { waitExecute(app, waitListen); } area.addEventListener('click', waitListen, true);}
然后,當(dāng)調(diào)用waitExecute時(shí),您需要?jiǎng)h除它。
function waitExecute (app, waitListen) { ... // other code area.removeEventListener('click', waitListen, true);}
添加回答
舉報(bào)