电脑疯子技术论坛|电脑极客社区

微信扫一扫 分享朋友圈

已有 482 人浏览分享

Jquery封装tab自动切换效果的具体实现

 关闭 [复制链接]
482 0
今天我这边网速真是太慢了,打开一个网页要等待很久,但是还是想写篇文章----tab自动切换 因为工作中经常会碰到这样的问题 所以写博客也是总结下 最重要的是能分享下 及以后碰到类似的可以参考下! 当然这是我用Jquery来封装的 页面可以调用多次 调用方式                new tabSlider(obj,count); obj指容器最外层ID,count指有多个li 当然要引用我这个js的话 一定要按照我结构来写!下面的是我的HTML一些结构如下
  1. <div id="tab1">
  2.     <ul class="menu">
  3.   
  4.       <li
  5. class="current">tab1</li>
  6.      
  7.    <li>tab2</li>
  8.      
  9.    <li>tab3</li>
  10.      
  11.    <li class="last-col">tab4</li>
  12.    
  13. </ul>
  14.     <div class="content-main">
  15.   
  16.       <div
  17. class="content">tab1</div>
  18.      
  19.    <div class="content hide">tab2</div>
  20.   
  21.       <div class="content
  22. hide">tab3</div>
  23.         <div
  24. class="content hide">tab4</div>
  25.     </div>
复制代码
</div>结构是这样的!下面是我页面上的HTML/CSS的代码!
  1. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  2. <title>无标题文档</title>
  3. <script type="text/javascript" src="<a href='http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></script'>http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></script</a>>
  4. <style>
  5. #tab1{ width:196px; height:220px; overflow:hidden; border:1px solid #666;}
  6. #tab2{ width:196px; height:220px; overflow:hidden; border:1px solid #666;}
  7. .menu{ width:196px; height:18px; margin:0; padding:0;}
  8. .menu li{ float:left; list-style:none; width:48px; text-align:center; border-bottom:1px solid #666; border-right:1px solid #666; cursor:pointer;}
  9. .menu li.current{ border-bottom:none;}
  10. .content-main{ width:196px; height:200px; overflow:hidden;}
  11. .content{ width:196px; height:200px; overflow:hidden; display:block;}
  12. .hide{ display:none;width:196px; height:200px; overflow:hidden;}
  13. .menu li.last-col{ border-right:none; width:49px;}
  14. </style>
  15. <script src="AutoTab.js"></script>
  16. </head>
  17. <body>
  18. <div id="tab1">
  19.     <ul class="menu">
  20.         <li class="current">tab1</li>
  21.         <li>tab2</li>
  22.         <li>tab3</li>
  23.         <li class="last-col">tab4</li>
  24.     </ul>
  25.     <div class="content-main">
  26.         <div class="content">tab1</div>
  27.         <div class="hide">tab2</div>
  28.         <div class="hide">tab3</div>
  29.         <div class="hide">tab4</div>
  30.     </div>
  31. </div>
  32. <br /><br />
  33. <div id="tab2">
  34.     <ul class="menu">
  35.         <li class="current">tab1</li>
  36.         <li>tab2</li>
  37.         <li>tab3</li>
  38.         <li class="last-col">tab4</li>
  39.     </ul>
  40.     <div class="content-main">
  41.         <div class="content">tab1</div>
  42.         <div class="hide">tab2</div>
  43.         <div class="hide">tab3</div>
  44.         <div class="hide">tab4</div>
  45.     </div>
  46. </div>
  47. <script>new tabSlider("#tab1",4);</script>
  48. <script>new tabSlider("#tab2",4);</script>
  49. </body>
  50. </html>
复制代码
JS代码如下:
  1. // JavaScript Document
  2.     /*
  3.     *@date 2011 10 24
  4.     *@ author tugenhua
  5.     *@ email tugenhua@126.com
  6.     *@ 可以一个页面多次引用
  7.     依赖的结构 */
  8.     <div id="tab1">
  9.     <ul class="menu">
  10.         <li class="current">tab1</li>
  11.         <li>tab2</li>
  12.         <li>tab3</li>
  13.         <li class="last-col">tab4</li>
  14.     </ul>
  15.     <div class="content-main">
  16.         <div class="content">tab1</div>
  17.         <div class="content hide">tab2</div>
  18.         <div class="content hide">tab3</div>
  19.         <div class="content hide">tab4</div>
  20.     </div>
  21. </div>
  22. /*页面引用的方式
  23.     new tabSlider("#tab1",4);
  24.     #tab1 是外部ID,4 指 一共有多少个li
  25. */
  26. function tabSlider(obj,count){
  27.     var _this = this;
  28.         _this.obj = obj;
  29.         _this.count = count;
  30.         _this.time = 2000;//停留的时间
  31.         _this.n = 0;
  32.         var  t;
  33.         this.slider = function(){
  34.             $(_this.obj + " .menu li").bind("mouseover",function(event){
  35.                 $(event.target).addClass("current").siblings().removeClass("current");
  36.                 var index = $(_this.obj + " .menu li").index(this);
  37.                 $(_this.obj + " .content-main .content").eq(index).show().siblings().hide();
  38.                 _this.n = index;     
  39.             })   
  40.         }
  41.         this.addhover = function(){
  42.             $(_this.obj).hover(function(){clearInterval(t);},function(){t=setInterval(_this.autoplay,_this.time)});  
  43.         }
  44.         this.autoplay = function(){
  45.             _this.n = _this.n >=(_this.count-1)? 0 : ++_this.n;
  46.             $(_this.obj + " .menu li").eq(_this.n).trigger("mouseover");     
  47.         }   
  48.         this.factory = function(){
  49.             this.slider();
  50.             this.addhover();
  51.             t = setInterval(this.autoplay,_this.time);   
  52.         }
  53.         this.factory();
  54. }
复制代码
面来说说下我封装这个js的思路,因为写任何程序 思路是最重要的,只要能想的清楚 代码就一定能实现掉!思路说的更好听的话 就是我们常说的“算法”!
1 function tabSlider(obj,count){} 用这个js来封装后传入参数!当在HTML页面上时直接调用tabSlider(obj,count)就可以了!
2 初始化一些参数 然后给这个函数自生自定义一个函数this.slider = function(){} 绑定个mouseover事件,初始化第一个li时 查找当前的div内容是否和当前li 指向同一个指针 如果相同 那块内容显示!其他的隐藏!
3 自定义this.addHover这个事件  当鼠标移上时候抽发这个事件!
4 自定义自动播放事件this.autoplay = function(){} 这个里面用了trigger这个触发方法_this.n = _this.n >=(_this.count-1)? 0 : ++_this.n;
   $(_this.obj + " .menu li").eq(_this.n).trigger("mouseover");
5 最后用个函数 来渲染上面的函数 调用上面的函数
  1.    this.factory = function(){
  2.    this.slider();
  3.    this.addhover();
  4.    t = setInterval(this.autoplay,_this.time);
  5.   }
  6.   this.factory();
复制代码

您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

关注

23

粉丝

2901

主题
精彩推荐
热门资讯
网友晒图
图文推荐

Powered by Pcgho! X3.4

© 2008-2022 Pcgho Inc.