The jQuery callback function solves a very common problem when dealing with animation. JavaScript statements are executed line by line.
There are instances when working with animations, where you do not want the next line of code to be executed until the animation has been completed.
To prevent this from happening, you can use the callback function.
Syntax
$(selector).effect(speed,callback)
Parameter | Description |
callback | An optional function to run after the method is completed |
HTML Example
We will use the following HTML for the examples listed below.
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$(document).ready(function(){
// ... jQuery Code ...
});
</script>
</head>
<body>
<img id="img3" src="toggle.png" /> ;
<div id="div1"> <!-- Some Content --> </div>
</body>
</html>
Example
In the following examples, we will look at the difference between using the callback function and omitting the callback function. In the first example,
no callback function is used. Notice that the toggle image chanages before the animation is completed. In the second example, the callback function
is used and the toggle image is not modified until the animation is completed.
<script type="text/javascript">
$(document).ready(function () {
$("#img1").click(function () {
$("#div1").slideToggle("slow");
var $img = $("#img1");
if ($img.attr("src") == "expand.png") {
$img.attr("src", "collapse.png");
} else {
$img.attr("src", "expand.png");
}
});
$("#img2").click(function () {
$("#div2").slideToggle("slow", function () {
var $img = $("#img2");
if ($img.attr("src") == "expand.png") {
$img.attr("src", "collapse.png");
} else {
$img.attr("src", "expand.png");
}
});
});
});
</script>
Without callback. Note the toggle icon.
With callback. Note the toggle icon.
Did you find the page informational and useful? Share it using one of your favorite social sites.
Recommended Books & Training Resources