Jquery 动画效果回调
1. 介绍¶
先来看看回调的英文定义:A callback is a function that is passed as an argument to another function and is executed after its parent function has completed。
字面上的理解,回调函数就是一个参数,将这个函数作为参数传到另一个函数里面,当那个函数执行完之后,再执行传进去的这个函数。这个过程就叫做回调。回调,回调,就是回头调用的意思。主函数的事先干完,回头再调用传进来的那个函数,这样看来也不是很难理解。
Callback
函数在当前动画 100% 完成之后执行。
下面拿个例子更进一步的理解
- 1.早上起来不论你是先刷牙还是先洗脸,都要等一个事情完毕后才能进行下一项,这就是一个同步的例子。
- 2.然后刷牙的时候你也可以烧水喝 (不用等你刷完牙)这就是一个异步的例子。
所以回调与同步、异步并没有直接的联系,回调只是一种实现方式,既可以有同步回调,也可以有异步回调,还可以有事件处理回调和延迟函数回调,这些在我们工作中有很多的使用场景。
许多 jQuery 函数涉及动画。这些函数也许会将 speed 或 duration 作为可选参数。
$("p").hide("slow")
- speed 或 duration 参数可以设置许多不同的值,比如 "slow", "fast", "normal" 或毫秒。
2. 例子¶
2.1 不带回调¶
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>caimengzhi blog jquery</title> <script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"></script> </head> <body> <button>开始隐藏吧</button> <p>人生苦短,我用Python</p> </body> <script> $(function () { $("button").click(function(){ $("p").hide("slow"); alert("段落现在被隐藏了"); }); }); </script> </html>
2.2 带回调¶
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>caimengzhi blog jquery</title> <script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"></script> </head> <body> <button>开始隐藏吧</button> <p>人生苦短,我用Python</p> </body> <script> $(function () { $("button").click(function(){ $("p").hide("slow",function(){ alert("段落现在被隐藏了"); }); }); }); </script> </html>
2.3 不回调¶
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>caimengzhi blog jquery</title> <script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"></script> </head> <body> <button id="start">开始隐藏吧</button> <button id="stop">停止哥们</button> <p>人生苦短,我用Python</p> </body> <script> $(function () { $("#start").click(function(){ $("p").hide(5000,function () { alert("段落现在被隐藏了"); }); }); $("#stop").click(function () { $('p').stop() }) }); </script> </html>
以下开始我点击开始隐藏,中途点击停止,停止后事件终止,不回调,但是我又点击开始隐藏后等待隐藏结束也就是事件发生完毕后,又回调了。