闭包中的javascript传递事件

标签 javascript closures

我正在尝试以下操作:

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/

相关文章:

javascript - 非 IE 浏览器的 Range.select() 等效方法

javascript - Jquery自动完成键盘导航设置输入值,如何更改字段?

javascript readAsArrayBuffer 返回空数组缓冲区

javascript - 获取类第一次出现的位置(Jquery)

php - 对 PDO FETCH 指令使用闭包

swift - 我可以在 Swift 中使用运算符作为默认函数参数吗?

groovy - 可以在groovy中获得闭包的调用者对象吗?

javascript - 一页上有两个导航固定导航栏

javascript - 为什么指定的 javascript 函数会持续存在?

javascript - JavaScript 闭包的一个包罗万象的定义