将函数作为参数传递并将其绑定到单击

时间:2014-02-06 09:37:07

标签: javascript jquery function bind

我有两个文件:

文件A:

var A = (function () {
    return {
        bindClick: function (fun) {
            $('#btnId').on('click', fun);
        }
    };
}());

文件B:

(function ($) {
    $(document).ready(function () {
        var doSomething = function (what) {
            console.log(what);
        }
        A.bindClick(doSomething(1));
    });
})(jQuery);

这打印我“绑定”只有一次,当我点击按钮时没有任何事情发生..

绑定作为参数传递的函数的正确方法是什么?

2 个答案:

答案 0 :(得分:0)

除了做某种令人费解的做事方式外,它似乎应该有效。事实上,它确实适用于评论者与...链接的jsfiddles。

我猜你的例子中没有其他代码会导致问题。在javascript控制台中是否有任何错误消息?

修改 A.bindClick(doSomething);更改为A.bindClick(doSomething(1));的更新代码不起作用,因为您立即触发doSomething方法并且bindClick从该函数调用接收返回值undefined

答案 1 :(得分:0)

问题在于我打电话:

 A.bindClick(doSomething(1));

但我错了函数的行为:它必须以这种方式返回一个函数:

var doSomething = function(what) {
  return function() {
     console.log(what);
  }
}

我希望它对某人有用!