Javascript 将函数作为参数传递,并将其绑定到click
我有两个文件: 文件A: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) {
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(函数($){…})
或justjQuery(函数($){…})代码>。您没有将jQuery传递到文件A中的作用域,但正在尝试使用它。@gpgekko:这并不能解释输出。无法重现问题:。请提供更多信息。适用于我->