Операторы JavaScript выполняются построчно. Но, поскольку для завершения эффекта jQuery требуется некоторое время, код следующей строки может выполняться, пока предыдущий эффект все еще выполняется. Чтобы этого не происходило, jQuery предоставляет функцию обратного вызова (Callback) для каждого метода.
Функция обратного вызова — это функция, которая выполняется после завершения эффекта. Функция обратного вызова передается в качестве аргумента для методов эффекта, и они обычно появляются в качестве последнего аргумента метода. Например, основной синтаксис метода эффекта jQuery slideToggle()
с функцией обратного вызова может быть задан с помощью:
$(selector).slideToggle(duration, callback);
Рассмотрим следующий пример, в котором мы поместили операторы slideToggle()
и alert()
рядом друг с другом. Если вы попробуете этот код, предупреждение будет отображаться сразу после нажатия кнопки триггера, не дожидаясь завершения эффекта переключения слайдов.
<script>
$(document).ready(function(){
$("button").click(function(){
$("p").slideToggle("slow");
alert("Эффект переключения слайдов завершен.");
});
});
</script>
И вот модифицированная версия этого примера, в котором мы поместили оператор alert()
в функцию обратного вызова для метода slideToggle()
. Если вы попробуете этот код, предупреждающее сообщение будет отображаться после завершения эффекта переключения слайдов.
<script>
$(document).ready(function(){
$("button").click(function(){
$("p").slideToggle("slow", function(){
// Код должен быть выполнен после завершения эффекта
alert("Эффект переключения слайдов завершен.");
});
});
});
</script>
Точно так же вы можете определить функции обратного вызова для других методов эффекта jQuery, например show()
, hide()
, fadeIn()
, fadeOut()
, animate()
и т.д.
Если метод эффекта применяется к нескольким элементам, то функция обратного вызова выполняется один раз для каждого выбранного элемента, а не один раз для всех.
<script>
$(document).ready(function(){
$("button").click(function(){
$("h1, p").slideToggle("slow", function(){
// Код должен быть выполнен после завершения эффекта
alert("Эффект переключения слайдов завершен.");
});
});
});
</script>
Если вы попробуете приведенный выше пример кода, он будет отображать одно и то же предупреждающее сообщение два раза. Один раз для элемента <h1>
, второй для <p>
, после нажатия кнопки триггера.