2012-02-10 244 views
0

为什么这个错误(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')); 

非常感谢:)。

+0

因为'FUNC( '巴')'可能返回'undefined'。你必须将一个函数传递给'keyup'。 – 2012-02-10 11:41:18

+0

可能的重复[尝试传入回调函数失败](http://stackoverflow.com/questions/6811746/trying-to-pass-in-a-callback-function-fails) – 2012-02-10 11:42:44

回答

3

要传递的fun结果作为回调被调用。你想发送函数本身。当你做

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

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

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

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

(你也可以在你分配一个额外的)func

0

包装在一个匿名函数:

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

:以匿名函数进行包装,做到这一点。

所以,如果你的函数是这样

func(foo) { return 5; } 

它一样

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

可以使用匿名函数

$('.some_class').keyup(function(){func('bar');}); 
相关问题