2012-04-26 18 views
1

として関数パラメータとして渡された匿名関数を使用して、この最高のコード例で説明されるので、なぜ(専門用語では)誰もが説明することができ、テストに渡された匿名関数はjQueryの後に呼び出されません。イベントを隠す?jQueryの - jQueryのコールバック関数

UPDATE:この例ではこれが何を参照しているのかは重要ではありませんが、明確にするためにtest関数がグローバルスコープにあり、これがアンカー要素です。

test(this, function() { 
    alert('Called by anonymous function!'); 
}); 

function test(object, callback) { 
    $(object).hide('slow', callback); 
} 

変更:

$(object).hide('slow', callback); 

へ:

$(object).hide('slow', callback()); 

作品。なぜなら、コールバックは現在のコンテキストまたはグローバルウィンドウオブジェクトの名前付き関数ではないからですか?

+0

あなたは 'この' は特に何、より多くのコードを提供する必要があります。それとは別に、手動でハンドラを実行するのは間違っています。 – Bergi

+0

あなたは、 ')' 'あなたのテスト()'コール – Joseph

+0

に本当にこれが何であるかは重要ではありません表示されません。しかし、引数として、テスト関数はグローバルスコープにあり、これはアンカー要素を参照します。コールバック()を使用してハンドラを実行するのが間違っているのはなぜですか?匿名関数への参照を単にjQuery .hide()へのコールバックとして渡すだけでは、実行されません。 – Matt

答えて

0

これは正しい方法です。

http://jsfiddle.net/6dFm6/6/

オブジェクトを削除していないと呼ばれているアニメーションのコールバックになります非表示アニメーション後に削除を呼び出します。コールバックが実行時に実行され、値がコールバックイベントの間に渡されて呼び出されるため

それはjsfiddle.net/6dFm6/1で働く理由があります。

は、コールバックとして「functionNameを()」から返されたものに明快のレベルを変化させるためにこれらの記事を参照してください。コールによって 'undefined'が返されたように見えますが、実行は正しい時刻に実行されます。

When to use() after a callback function name?

In JavaScript, does it make a difference if I call a function with parentheses?

Callback function - use of parentheses

do I need parenthesis when using a named function as an jquery ajax success callback

javascript syntax: function calls and using parenthesis

1

あなたのコードでは、より多くのあなたは、あなたのコード内で匿名関数を呼び出していないこの

test(this, function() {...}); 

ようになっているはずですが、私はその構文が実際のこのフィドルを

チェックアウト何かわかりません作業例http://jsfiddle.net/L4NxD/2

編集では、元のコードをよりよく複製するために編集作業を行いました。以前のバージョンを取得するには、http://jsfiddle.net/L4NxD/1を使用し、ちょうどhttp://jsfiddle.net/L4NxD/を使用してください。

+0

現在見ているのは – Matt

+0

これはjavscriptセレクタに置き換えた以外は私のコードと変わりません。これは、このオブジェクトが渡されている間にエラーがあると私に思います。デモをありがとう。問題が絞り込まれたとみなされました。受け入れる前にいくつかのテストを実行します。 – Matt

+0

完全なコード例についてはhttp://jsfiddle.net/6dFm6、callback()を使用してコールバックを呼び出す場合はhttp://jsfiddle.net/6dFm6/1/を参照してください。最初のものは2番目のものは動作しません。 – Matt

関連する問題