0

我正在使用以下代码在 DOM 元素上添加事件侦听器:

var me = this;

element.addEventListener('click', function(element) {
    return function(evt) { 
        me.handler(evt, element); 
    };
} (element) , false);

当我单击元素时,将使用事件和元素作为参数调用处理程序。

我已经阅读了有关闭包的信息here,但我仍然不清楚事件对象如何与 evt 变量相关联。

4

1 回答 1

1

你为什么不直接使用

var me = this;
element.addEventListener('click', function(evt) { 
     me.handler(evt, element); 
} , false);

我仍然不清楚事件对象是如何与 evt 变量相关联的。

如果你使用addEventListener,当事件被触发时,事件监听器会收到一个参数,即事件。

然后,当您添加事件侦听器时,以下代码

function(element) {
    return function(evt) { 
        me.handler(evt, element); 
    };
} (element)

被评估并返回以下函数

function(evt) { 
    me.handler(evt, element); 
}

这是事件处理程序。然后,它的第一个参数evt是事件。

于 2013-10-17T00:07:20.323 回答