2011-12-15 16 views
3

私は単純な関数でコールバックを作成したいと考えています。jQuery Create Callback

function main(){ }; 

は、だから私はその本を呼び出すために行わmain()を、希望:

私は、ボタンのクリックで呼び出され、この機能を持っている

function test(){ } 

答えて

3

main()関数は、AJAXを使用しない場合は、あなたが使用することができます。

function main(callback) { 
    // ... do your thing 
    callback(); 
} 

function test(){} 

eg: 
<input type="button" onclick="main(test);"/> 

main()関数を使用アヤックス場合、あなたはこのように完全な機能テスト()を呼び出すことができます。

function main(callback){ 
    $.ajax({ 
     ... 
     complete: function(XMLHttpRequest, textStatus){ 
      callback(); 
     }, 
     ... 
    }); 
} 

function test(){ 
    ... 
} 
eg: 
<input type="button" onclick="main(test);" value="test"/> 
+0

こんにちは、ありがとう。私はajaxを使用していません。あなたの最初の例では、APIはmain(test)を呼び出すことはできません。例:API.loadAndWait( 'snippet'、 '5'、main); main(test)でmainを置き換えるとコンパイルできません – jQuerybeast

+0

その場合、 'API.loadAndWait( 'snippet'、 '5'、function(){main(test);})のようなものを使う必要があります。 ' – devnull69

4
function main(callback) { 
    // ... do your thing 
    callback(); 
} 

main(function(){ 
    alert('this is the callback speaking'); 
}); 
+0

どこでテストを呼び出しますか? – jQuerybeast

+0

@jQuerybeast: 'test'関数を' main'の 'callback'パラメータとして渡します。私の答えが更新されました –

1

私が理解できるように、そのシンプル、申し訳ありませんが、私はポイントにない場合。

function main() { 
// ... do your thing 
test(); 
} 


function test() { 
// ... do your thing in test 

} 
+0

これは私が思ったものですが、テストはメイン – jQuerybeast

+0

で実行されますので、尊敬は何ですか?メインの後にテストを実行したい場合は、これを実行してください。 setTimeout( "test()"、3000); 3000ミリ秒後に呼び出されます。 – sampathpremarathna

+0

main()で何をしなくても、 '()'の後に 'test()'だけを実行したときではありません。私たちはあなたのコードを知らないので、あなたのコードのどこに 'test()'を呼び出さなければならないのか推測できません。私たちがあなたを助けることができるより多くのコードを表示 – devnull69