的我怎麼能刪除此事件監聽器我都試過,但下面的代碼,並沒有縫裸露任何水果removeEventListener匿名函數的javaScript
class Tag {
constructor(name){
this.tag = document.createElement(name);
}
removeEvent(e,func){
this.tag.removeEventListener(e,func,false);
}
addEvent(e,func) {
this.tag.addEventListener(e,func,false);
}
}
let tag = new Tag();
tag.addEvent('click',(e)=> {
console.log('something');
});
如何獲得removeEvent工作?請幫助我特別需要如何引用匿名函數,因爲這個工作。
function handler(e){
// code for event
}
tag.addEventListener('click',handler,false);
tag.removeEventlistener('click',handler,false);
我曾嘗試加入
removeEvent(e,func) {
func.ref = function(){
return arguments.callee;
}
this.tag.removeEventListener(e,func.ref,false);
}
只是沒有現在我們將參照func.ref作爲函數引用給定的工作;
我不認爲你可以做,沒有爲了保存到事件處理程序的引用將它傳遞給'removeEventListener'。 – Thiatt
如果你追蹤到這一切,jQuery的'off()'方法[附加到這個'jQuery.event.remove()'](https://github.com/jquery/jquery/blob/a6b0705294d336ae2f63f7276de0da1195495363/src/event。 js#L221),然後做其他事情。最終,它會以您嘗試的'removeEventListener()'調用結束。但是,句柄來自'privData',所以我的猜測是他們在某處保留了一個引用,以便稍後可以傳遞它。 –