jQuery 回撥函式

在本教程中,你將學習如何為 jQuery 效果定義回撥函式。

jQuery 回撥函式

JavaScript 語句是逐行執行的。但是,由於 jQuery 效果需要一些時間才能完成,下一行程式碼可能會在前一個效果仍在執行時執行。為了防止這種情況發生,jQuery 為每個效果方法提供了一個回撥函式。

回撥函式是一旦效果完成就會執行的函式。回撥函式作為引數傳遞給效果方法,它們通常顯示為方法的最後一個引數。例如,帶有回撥函式的 jQuery slideToggle() 效果方法的基本語法如下:

$(selector).slideToggle(duration, callback); 

請考慮以下示例,其中我們將 slideToggle()alert() 語句放在一起。如果試一下此程式碼,則單擊觸發按鈕後將立即顯示警報,而無需等待幻燈片切換效果完成。

<script type="text/javascript">
$(document).ready(function(){
    $("button").click(function(){
        $("p").slideToggle("slow");
        alert("The slide toggle effect has completed.");
    });   
});
</script>

而且,這是我們將 alert() 語句放在 slideToggle() 方法的回撥函式中的修改版本。如果你嘗試此程式碼,則幻燈片切換效果完成後將顯示警告訊息。

<script type="text/javascript">
$(document).ready(function(){
    $("button").click(function(){
        $("p").slideToggle("slow", function(){
            // Code to be executed once effect is complete
            alert("The slide toggle effect has completed.");
        });
    });   
});
</script>

同樣,你可以定義其他的 jQuery 效果方法的回撥函式,如 show()hide()fadeIn()fadeOut()animate() 等。

注意: 如果效果方法應用於多個元素,則對每個選定元素執行一次回撥函式,而不是對所有元素執行一次。

<script type="text/javascript">
$(document).ready(function(){
    $("button").click(function(){
        $("h1, p").slideToggle("slow", function(){
            // Code to be executed once effect is complete
            alert("The slide toggle effect has completed.");
        });
    });   
});
</script>

如果你嘗試上面的示例程式碼,它會在單擊觸發按鈕時每次 <h1><p> 元素顯示兩次相同的警報訊息。