A-A+

jQuery 关于delay函数的使用方法

2016年01月09日 前端设计 暂无评论 阅读 4 views 次

delay函数我相信没几个朋友真正的了解了,今天小编在使用jquery delay函数时也碰到几个问题了,下面一起来了解一下delay函数用法.

delay()在我的脑洞中应该和setTimeout一个用法,万万没想到,他们其实是有差别的。

delay()只能在动画队列中起作用,而setTimeout()才是真正的延时。

比如,正在学coffee不知道是不是这么写的:

  1. $(".next").click(->  
  2.     $(".main ul li").css "opacity""0"  
  3.     setTimeout(->  
  4.         $(".main ul li").css "opacity""0.7"  
  5.     , 1000)  
  6. )  

这里我需要把opacity延时,那么用delay()是不能了,css()方法并不是动画。

在jQuery1.4中性增加的,.delay()方法允许我们将队列中的函数延时执行。它既可以推迟动画队列中函数的执行,也可以用于自定义队列。只有队列中连续的事件会延迟; 例如,不带参数的 .show() 或者 .hide()不会延迟,因为他们没有使用效果队列
延时时间(duration参数)是以毫秒为单位的,数值越大,动画越慢,不是越快。字符串 'fast' 和 'slow' 分别代表200和600毫秒的延时。

使用标准效果列队,举个例子,我们可以在

的 .slideUp() 和 .fadeIn() 动画之间设置800毫秒的延时:

$('#foo').slideUp(300).delay(800).fadeIn(400);

当这句语句执行的时候,这个元素会以300毫秒的卷起动画,接着暂停800毫秒,最后有400毫秒的淡入动画。

.delay()是用来在jQuery动画效果和类似队列中是最好的。但是,由于其本身的限制,比如无法取消延时——.delay(),它不是JavaScript的原生 setTimeout函数的替代品,这可能是更适合某些使用情况。

例子:隐藏再显示两个div。其中绿色的div在显示之前,有800毫秒的延时。

  1. <!DOCTYPE html>  
  2. <html>  
  3. <head>  
  4.   <style>  
  5. div { position: absolute; width: 60px; height: 60px; float: left; }  
  6. .first { background-color: #3f3; left: 0;}  
  7. .second { background-color: #33f; left: 80px;}  
  8. </style>  
  9.   <script src="http://code.jquery.com/jquery-latest.js"></script>  
  10. </head>  
  11. <body>  
  12.    
  13. <p><button>Run</button></p>  
  14. <div class="first"></div>  
  15. <div class="second"></div>  
  16. <script>  
  17.     $("button").click(function() {  
  18.       $("div.first").slideUp(300).delay(800).fadeIn(400);  
  19.       $("div.second").slideUp(300).fadeIn(400);  
  20.     });</script>  
  21.    
  22. </body>  
  23. </html>  
标签:

给我留言