2012-02-10 25 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'に関数を渡す必要があります。 –

+0

[コールバック関数を渡そうとすると失敗する可能性があります](http://stackoverflow.com/questions/6811746/trying-to-pass-in-a-callback-function-fails) –

答えて

3

コールバックが呼び出されるようあなたがfunの結果を渡しています。関数自体を送信したいとします。匿名関数でラップすることによってこれを行います。あなたは

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

を行う際

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

を渡します。func('bar').keyupにその関数を呼び出して渡しています。

(あなたはまた、funcにあなたの割り当てで余分)を持っている)

0

匿名関数で包み:

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

それは効果的にfuncの戻り値がkeyupの引数であることを意味します。

だから、あなたの関数は、この

func(foo) { return 5; } 

そのよう

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

使用匿名関数

$('.some_class').keyup(function(){func('bar');}); 
関連する問題