我有这个问题:
我定义了一个需要参数的事件处理程序。
我定义了一个需要参数的事件处理程序。
var handler = function(p1, p2){
//some code
}
然后我在函数内部将事件处理程序添加到一个对象中。
function foo(p1, p2){
//Some code
obj.addEventListener('click', handler(p1, p2), false)
}
正如您已经知道的那样,上面的代码是不正确的。它不会监听事件。相反,它将立即执行该函数。现在要解决这个问题,我只需删除 handler(p1, p2)
并替换为 function(){ handler(p1, p2) }
。但问题是我还有另一个函数要删除事件监听器,这种方法就行不通了。
function koo(){
//Some code
obj.removeEventListener('click', handler, false)
}
我该如何修复这个问题?
foo
和koo
在哪个作用域中?koo
如何知道要移除哪个处理程序? - Felix Kling