简单的jQuery扩展函数-让函数缓冲执行
$.fn.retarder = function(delay, method) { var node = this; if (node.length) { if (node[0]._timer_) clearTimeout(node[0]._timer_); node[0]._timer_ = setTimeout(function() { method(node); }, delay); } return this; };
原理就是用了setTimeout这函数, 使用方法
$(div).retarder(150, function(i) { box.css({ height: box[0].hei - 50, width: box[0].wid, overflow: 'hidden' }); i.css(animate.from).stop(true, true).animate(animate.to, { duration: 200, complete: function() { if (!$.browser.msie) div.css('opacity', 1); box.css('display', 'none') } }) })
使用实例基于缓冲器做成的图片轮播渐显插件如下:
HTML
<div> <img src="/images/1.png" /> </div> <div> <img src="/images/2.png" /> </div> <div> <img src="/images/3.png" /> </div> <div> <img src="/images/4.png" /> </div> <div> <img src="/images/5.png" /> </div> </div>
jQuery
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | $.fn.initSlideshow = function () { var self = $( this ); self.find( "div" ).each( function (n) { var This = $( this ); This.retarder(n * 2000, function (node) { node.fadeIn(1000, function () { if (n == self.find( "div" ).length - 1) { /*self.find("div").fadeOut(1000).retarder(2000, function (node) { node.fadeIn(1000); });*/ self.find( "div" ).retarder(5000, function (node) { node.fadeOut(1000); }); self.retarder(7000, function (node) { node.initSlideshow(); }); } }); }); }); }; |
CSS
#slideshow { width: 1040px; height: 345px; padding-left: 10px; } #slideshow div { float: left; height: 345px; line-height: 345px; display: none; }
标签:
Jquery
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?