解決addEventListener傳參的問題和removeEventListener不起作用的問題

我的需求是希望在觸發監聽之後,移除這個監聽
廢話不多說直接上代碼
addEventListener:

function f(){
	let vueThis = this
	let fun = function () {
		vueThis.foo(param,fun)
	}
	document.querySelector('#deptUpdate').addEventListener('click', fun)
}

removeEventListener:

foo (param ,fun){
	document.querySelector('#deptUpdate').removeEventListener('click', fun)
	//TODO
}

1、如果要在添加監聽器的同時傳參,需要在外面套一層function,否則方法會自動執行
2、移除的時候傳遞的參數要相同
3、監聽器中的function必須提出來,不能使用匿名函數,因爲不同的匿名函數內存地址不同,移除監聽器的時候會被認爲是不同的函數,導致移除失敗

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章