2011-10-30 376 views
0

我想知道在完成第一個函數之後,執行第二個函數的最佳方法是什麼。jQuery:在函數a完成後創建函數b

例如製作動畫,然後淡入另一元件:

$('.btn').click(function() { 
$("#div1").animate({ 
    marginTop: - 100 
    }, "slow"); 
    $("#div2").fadeIn(); 
}); 

這變淡在Div2的,並在同一時間它動畫的DIV1。有些人使用延遲(),但這不是一個很好的解決方案,因爲一些瀏覽器的行爲不同等。由於

回答

0

一個例子:

$('#div1').animate({marginTop: -100}, "slow", function() { 
    $('#div2').fadeIn(); 
}); 

如果您正在創建自己的功能;你可以像這樣傳遞迴調函數:

function doSomething(param, fn){ 
    // Do something with function 

    // Execute Callback Function // 
    if (typeof fn == 'function') { 
     fn.call(this); // Give Function Scope 
    } 
} 

doSomemthing(
    param, 
    function(){ 
     // Callback Function Goes Here 
    } 
) 

我希望這有助於!

0

animate[docs]接受第三個參數,它被執行一次的動畫完成回調函數:你可以在動畫爲div1的完整功能進行div2.fadeIn()

$("#div1").animate({marginTop: - 100}, "slow", funciton() { 
    $("#div2").fadeIn(); 
}); 
0

$('.btn').click(function() { 
$("#div1").animate({ 
    marginTop: - 100 
    }, "slow", function() {; 
    $("#div2").fadeIn();}); 
}); 
0

您可以使用Callbacks。只要第一個函數返回,第二個函數就會啓動。您可以根據需要鏈接儘可能多的回調。如果您使用的是內置的功能,像動畫,你可以利用它的回調函數(一旦動畫完成時執行)這樣

@費利克斯 - 克林在his post

相關問題