我正在編寫一個香草JavaScript工具,該工具在啓用時爲每個傳入的元素添加事件偵聽器。使用參數添加和刪除事件偵聽器
我願做這樣的事情:
var do_something = function (obj) {
// do something
};
for (var i = 0; i < arr.length; i++) {
arr[i].el.addEventListener('click', do_something(arr[i]));
}
不幸的是這不起作用,因爲據我所知,添加事件偵聽器時,參數只能傳遞到匿名函數 :
for (var i = 0; i < arr.length; i++) {
arr[i].el.addEventListener('click', function (arr[i]) {
// do something
});
}
的問題是,我需要能夠當工具被禁止刪除事件偵聽器,但我不認爲這是可能移除事件偵聽器與ANO nymous功能。
for (var i = 0; i < arr.length; i++) {
arr[i].el.removeEventListener('click', do_something);
}
我知道我可以很容易地使用jQuery來解決我的問題,但我試圖儘量減少依賴性。 jQuery必須以某種方式繞過此代碼,但代碼有點像叢林!
所以命名你的監聽器,然後你可以使用'removeEventListener'。 – marekful 2013-02-26 11:33:17
既然你知道jQuery可以解決你的問題,你只需要閱讀源代碼是如何工作的。 – pktangyue 2013-02-26 11:41:02
+1至少爲粗體字「vanilla JavaScript」加上斜體並且表示jQuery! (希望沒有人會實際上建議jQuery作爲解決方案,現在...)但也+1,因爲這是一個很好的問題。 – guypursey 2013-02-26 11:43:20