2012-01-10 12 views
1

私はこのようなコールバック(私はそれが呼ばれています信じている)を書いた:それは私が何度も何度も同じコードを再利用しないように、一部のコンテンツをフェードインするための簡単なコードですコールバックのコールバック?

hugeFadeIn(); 

を。

私はその後、 hugeFadeIn終了した後、いくつかのコードを実行したい

... は、だから私はこのでした:

hugeFadeIn(){ 
    //la la la 
}); 

をそして、それは間違っていたので、私はこれでした:

$(hugeFadeIn(){ 
    //la la la 
}); 

をそして、私は」依然としてエラーが発生しています。私は間違って何をしていますか?みんなありがとう:)

編集 要求されたとして、hugeFadeIn関数の本体:

function hugeFadeIn() { 
    $("#huge-loader").fadeIn("fast"); 
} 
+0

2つの機能を次々に入れてみませんか?または、コールバック関数としてのみ使用されるhugeFadeIn()ですか? –

+0

hugeFadeIn()関数の本体を投稿できますか? – fcalderan

答えて

2

OP後の事hugeFadeInが終了した後、あなたはあなたのコールバックを渡す必要があります。

function hugeFadeIn(after) { 
    // whatever 
    after(); 
} 

hugeFadeInがフェード自体を行い、自身がコールバックを取る何かを呼び出すことに依存していない場合。)

編集編集。

function hugeFadeIn(after) { 
    $("#huge-loader").fadeIn("fast", after); 
} 
+0

Daveさん、ありがとうございました。それは本当ですか、それとも単に例として使用されていますか? – pufAmuf

+0

@pufAmuf関数宣言のように、関数パラメータの名前です。 –

+0

[fadeInのドキュメントを参照](http://api.jquery.com/fadeIn/)。 フェードが終了した後に関数myFuncを実行したい場合は、この関数を 'fadeIn(...)'の2番目の引数として渡すべきです: '$("#huge-loader ").fadeIn(" fast "、myFunc)'これを行う最も簡単な方法は、上記のように 'hugeFadeIn'でパラメータを宣言し、' hugeFadeIn(myFunc);を呼び出すことです。 – akoptsov

1

近い... hugeFadeInで次に

hugeFadeIn(function() { 

    alert('My callback is running'); 

}); 

()

hugeFadeIn = function(fn) { 

    fn(); 

} 
+0

こんにちはセス、答えをありがとう!しかし、「hugeFadeIn」内のコードが(2番目の)コードを実行することを尋ねてもいいですか? – pufAmuf

+0

私は 'hugeFadeIn'への割り当てを理解していません。 –

+0

それは私に向けられていますか?その理由は、どこでも簡単に再利用でき、すべてを1つずつ変更することなく変更できる1つのコードを使用するためです。 – pufAmuf

1

function hugeFadeIn(time, callback) { 
    $('.something').fadeIn(time, callback); 
} 

それでは

hugeFadeIn(500, doAjaxWhathever); 

またはasync

$.HugeFade = function(item, time, callback) { $(item).fadeIn(time); callback();} 
$.HugeFade('#myDiv', 1500, myCallback); 

ため、このようなものしかし、あなたが」あなたが必要な場合は、最初の1

hugeFadeIn(); 
someOtherMethodCall(); 

後の第2の方法の同じ要素だけ置くコールで何かをする必要がある場合は、コールバックとしてhugeFadeInを使用して再、あなたはこの

$('#myDiv').load(url, hugeFadeIn(500, callback2)); //wrong 
// it should be.. 
$('#myDiv').load(url, function(){hugeFadeIn(500, callback2)}); 
+0

本当はそうではありません。 'fadeIn'は非同期です。 –

+0

right、fixed ... –

1

を行うことはできませんページ上の他の要素を処理するために、最初のメソッドの終了後に強制的に2番目のメソッドを呼び出す必要があります。 - 遅延メソッド(http://api.jquery。COM /ディレイ/)

hugeFadeIn(); 
someOtherMethodCall(); 

someOtherMethodCall(time){ 
    $('#some-id').delay(time).hide(); 
} 
+0

代わりにjQueryの組み込み機能を使用してみませんか? –

1

私は関数を書くとき、私は通常、コールバック用のパラメータを置く:

function myFunction(param1, callback_param){ 

    alert(param1); // do stuff here 

    if(typeof(callback_param) == "function"){ 

     callback_param(); 

    } 
} 

、ここでは、私はそれを呼び出す方法です。

myFunction('Hello World', function(){ 
    alert('Yes!, this is the World, how can i help you?'); 
}); 

希望です。 ありがとう

関連する問題