Javascript 将函数作为参数传递,并将其绑定到click

Javascript 将函数作为参数传递,并将其绑定到click,javascript,jquery,function,bind,Javascript,Jquery,Function,Bind,我有两个文件: 文件A: var A = (function () { return { bindClick: function (fun) { $('#btnId').on('click', fun); } }; }()); (function ($) { $(document).ready(function () { var doSomething = function (what) {

我有两个文件:

文件A:

var A = (function () {
    return {
        bindClick: function (fun) {
            $('#btnId').on('click', fun);
        }
    };
}());
(function ($) {
    $(document).ready(function () {
        var doSomething = function (what) {
            console.log(what);
        }
        A.bindClick(doSomething(1));
    });
})(jQuery);
文件B:

var A = (function () {
    return {
        bindClick: function (fun) {
            $('#btnId').on('click', fun);
        }
    };
}());
(function ($) {
    $(document).ready(function () {
        var doSomething = function (what) {
            console.log(what);
        }
        A.bindClick(doSomething(1));
    });
})(jQuery);
这个打印我“绑定”只有一次,当我点击按钮时什么也没有发生


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

除了做事情的方式有些复杂之外,它似乎应该可以工作。事实上,它在评论者链接到的jsfiddles中确实有效

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

编辑:
更新的代码,其中
A.bindClick(doSomething)更改为
A.bindClick(doSomething(1))
,不起作用,因为您正在立即启动
doSomething
方法,并且bindClick从该函数调用接收返回值
undefined

问题是我调用了:

 A.bindClick(doSomething(1));
但函数的行为我错了:它必须以这种方式返回函数:

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

我希望它对某人有用

仅供参考,而不是
(函数($){$(文档).ready(函数(){…});})(jQuery)
,您可以编写
jQuery(document).ready(函数($){…})
或just
jQuery(函数($){…})。您没有将jQuery传递到文件A中的作用域,但正在尝试使用它。@gpgekko:这并不能解释输出。无法重现问题:。请提供更多信息。适用于我->