Jquery中淡入淡出效果fadeIn()、fadeOut()、fadeToggle()、fadeTo()学习引发的思考----关于Jquery函数传参数
一、基本语法
1、fadeIn淡入、fadeOut淡出、fadeToggle淡入淡出切换(已经淡出点击淡入,或者相反):
$(selector).fadeIn(duration,complete);
$(selector).fadeOut(duration,complete);
$(selector).fadeToggle(duration,complete);
可选的 speed 参数规定效果的时长。它可以取以下值:"slow"(200ms)、"fast"(600ms) 或毫秒。【默认为400ms】
可选的 callback 参数是 fading 完成后所执行的函数名称。
2、fadeTo:jQuery fadeTo() 方法允许渐变为给定的不透明度(值介于 0 与 1 之间)。
$(selector).fadeTo(speed,opacity,callback);
必需的 speed 参数规定效果的时长。它可以取以下值:"slow"、"fast" 或毫秒。
fadeTo() 方法中必需的 opacity 参数将淡入淡出效果设置为给定的不透明度(值介于 0 与 1 之间)。
可选的 callback 参数是该函数完成后所执行的函数名称。
二、使用方法
1、内联调用(匿名函数)
<!DOCTYPE html> <html> <head> <script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.8.0.js"></script> <script> $(document).ready(function(){ $("button").click(function(){ $("#div1").fadeIn(); $("#div2").fadeIn("slow"); $("#div3").fadeIn(3000); }); }); </script> </head> <body> <p>演示带有不同参数的 fadeIn() 方法。</p> <button>点击这里,使三个矩形淡入</button> <br><br> <div id="div1" style="width:80px;height:80px;display:none;background-color:red;"></div> <br> <div id="div2" style="width:80px;height:80px;display:none;background-color:green;"></div> <br> <div id="div3" style="width:80px;height:80px;display:none;background-color:blue;"></div> </body> </html>
即直接在callback处写函数。
2、外部调用
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.8.0.js"></script> <script type="text/javascript"> function myFunc(){ document.getElementById("pp").innerHTML = "sdad"; }; $(document).ready(function(){ $("button").click(function(){ $("#div1").fadeIn("slow"); $("#div2").fadeIn("fast"); $("#div3").fadeIn(3000, myFunc); }); }); </script> </head> <body> <p>演示带有不同参数的 fadeIn() 方法。</p> <p id="pp">Testing</p> <button>点击这里,使三个矩形淡入</button> <br><br> <div id="div1" style="width:80px;height:80px;display:none;background-color:red;"></div> <br> <div id="div2" style="width:80px;height:80px;display:none;background-color:green;"></div> <br> <div id="div3" style="width:80px;height:80px;display:none;background-color:blue;"></div> </body> </html>
三、新API
点击参考 新API参数有三个,而callback(complete)参数是最后一个,那么为什么可以正确执行呢?
这是JS特性之一,以前没见过这样的函数调用,而且发现我根本没有把myFunc函数传递给Jquery函数!这必须深究一下,So JS函数到底是怎么回事?
四、JS函数重载
有过C系列语言学习经历的都知道,函数传递参数都会进行一致性检查,你传递多少个参数,参数的类型都会检查。但是由上面的例子可以看出,javascript却没有这样的一致性检查!多传、少传好像他都能接受。验证过后确定确实是这样的,传递很多个参数都可以。
还有一个问题是好像间隔传递都行?!这就很奇葩了,那么原因是什么呢?想了很久也没想明白!查看源码,发现很多jQuery.extend方法,那么确定了:原因是函数重载。但是我们注意到JS和C++的不同,C++会有参数检查,多了不行,所以可以直接定义多个参数类型或者个数不同的同名函数实现重载,JS却不管你有多少,只管前面的有效参数。那么怎么实现JS的函数重载?有很多方法!
1、利用arguments实现;
2、利用typeof进行参数类型判断;
但是这两种方法有很大的局限性,要是处理的参数很多,重载逻辑岂不是很复杂!?那么有没有好的方法呢?
最终发现暂时还没有极好的方法,但是看到几篇还不错的文章
http://vilic.info/blog/archives/tag/%E5%87%BD%E6%95%B0%E9%87%8D%E8%BD%BD
本文由@The_Third_Wave(Blog地址:http://blog.csdn.net/zhanh1218)整理。还有未涉及的,会不定期更新,有错误请指正。
如果你看到这篇博文时发现不完整,那是我为防止爬虫先发布一半的原因,请看原作者Blog。
如果这篇博文对您有帮助,为了好的网络环境,不建议转载,建议收藏!如果您一定要转载,请带上后缀和本文地址。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。