将参数作为参数传递给另一个函数

时间:2012-02-10 11:39:33

标签: jquery

为什么会出现此错误(jquery-1.7.1.js:3256 Uncaught TypeError: Object 50 has no method 'apply' Uncaught TypeError: Object 50 has no method 'apply'):

var func = function(foo) {
  // some code
});

$('.some_class').keyup(func('bar'));

非常感谢:)。

4 个答案:

答案 0 :(得分:3)

您正在传递fun的结果作为要调用的回调。您想要发送功能本身。通过将其包装在匿名函数中来执行此操作:

$('.some_class').keyup(function(){
 func('bar');
});

答案 1 :(得分:2)

单独传递funcfunc('bar')正在调用该函数并将其结果传递给.keyup

(您在))的作业中还有一个额外的func

答案 2 :(得分:0)

将其包装在匿名函数中:

$('.some_class').keyup(function () {
    func('bar');
});

答案 3 :(得分:0)

当你做

$('.some_class').keyup(func('bar'));

它实际上意味着func的返回值是keyup的参数。

所以,如果你的功能是这样的

func(foo) { return 5; }

相同
$('.some_class').keyup(5);

使用匿名函数

$('.some_class').keyup(function(){func('bar');});