javascript中的通过事件关闭

Mag*_*sso 2 javascript closures

我正在尝试以下方法:

f.addEventListener('submit',(function(frm){
var func = (function(e){somefunction(e,frm);})(e);
})(f),false);
Run Code Online (Sandbox Code Playgroud)

但这是失败的。我想将形式(f)作为静态引用和动态事件对象传递给命名函数'somefunction'。

我上面没有的工作,通过这两个正确的语法是什么?

Jon*_*ski 5

问题在于,每个functions都会被立即调用,而undefined实际上会传递给addEventListener()

你会想,而不是return在一个function•不用其调用括号因此事件以后可以称呼它:

f.addEventListener('submit', (function (frm) {
    return function (e) {
        someFunction(e, frm);
    };
})(f), false);
Run Code Online (Sandbox Code Playgroud)

尽管使用事件绑定,您可能不一定需要关闭,因为<form>将会是传递的上下文(thisfunction

f.addEventListener('submit', someFunction, false);

function someFunction(e) {
    var frm = this;
    // ...
}
Run Code Online (Sandbox Code Playgroud)