我正在尝试以下操作:
f.addEventListener('submit',(function(frm){
var func = (function(e){somefunction(e,frm);})(e);
})(f),false);
但这是失败的。我想将表单 (f) 作为静态引用和动态事件对象传递给命名函数“somefunction”。
我上面的内容不起作用,传递两者的正确语法是什么?
最佳答案
问题是每个 function
s 立即被调用,带有 undefined
实际上被传递给addEventListener()
.
你会想要 return
function
之一s 没有调用括号,以便事件稍后可以调用它:
f.addEventListener('submit', (function (frm) {
return function (e) {
someFunction(e, frm);
};
})(f), false);
不过,对于事件绑定(bind),您可能不一定需要闭包,因为 <form>
将是 this
的上下文 ( function
)通过:
f.addEventListener('submit', someFunction, false);
function someFunction(e) {
var frm = this;
// ...
}
关于闭包中的javascript传递事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19733679/