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


Posted in Javascript onJuly 13, 2013

  今天我这边网速真是太慢了,打开一个网页要等待很久,但是还是想写篇文章----tab自动切换 因为工作中经常会碰到这样的问题 所以写博客也是总结下 最重要的是能分享下 及以后碰到类似的可以参考下! 当然这是我用Jquery来封装的 页面可以调用多次 调用方式                new tabSlider(obj,count); obj指容器最外层ID,count指有多个li 当然要引用我这个js的话 一定要按照我结构来写!下面的是我的HTML一些结构如下:

<div id="tab1">
    <ul class="menu">
        <li class="current">tab1</li>
        <li>tab2</li>
        <li>tab3</li>
        <li class="last-col">tab4</li>
    </ul>
    <div class="content-main">
        <div class="content">tab1</div>
        <div class="content hide">tab2</div>
        <div class="content hide">tab3</div>
        <div class="content hide">tab4</div>
    </div>
</div>

结构是这样的!下面是我页面上的HTML/CSS的代码!
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></script>
<style>
#tab1{ width:196px; height:220px; overflow:hidden; border:1px solid #666;} 
#tab2{ width:196px; height:220px; overflow:hidden; border:1px solid #666;} 
.menu{ width:196px; height:18px; margin:0; padding:0;} 
.menu li{ float:left; list-style:none; width:48px; text-align:center; border-bottom:1px solid #666; border-right:1px solid #666; cursor:pointer;} 
.menu li.current{ border-bottom:none;} 
.content-main{ width:196px; height:200px; overflow:hidden;} 
.content{ width:196px; height:200px; overflow:hidden; display:block;} 
.hide{ display:none;width:196px; height:200px; overflow:hidden;} 
.menu li.last-col{ border-right:none; width:49px;} 
</style>
<script src="AutoTab.js"></script>
</head>
<body>
<div id="tab1">
    <ul class="menu">
        <li class="current">tab1</li>
        <li>tab2</li>
        <li>tab3</li>
        <li class="last-col">tab4</li>
    </ul>
    <div class="content-main">
        <div class="content">tab1</div>
        <div class="hide">tab2</div>
        <div class="hide">tab3</div>
        <div class="hide">tab4</div>
    </div>
</div>
<br /><br />
<div id="tab2">
    <ul class="menu">
        <li class="current">tab1</li>
        <li>tab2</li>
        <li>tab3</li>
        <li class="last-col">tab4</li>
    </ul>
    <div class="content-main">
        <div class="content">tab1</div>
        <div class="hide">tab2</div>
        <div class="hide">tab3</div>
        <div class="hide">tab4</div>
    </div>
</div>
<script>new tabSlider("#tab1",4);</script>
<script>new tabSlider("#tab2",4);</script>
</body>
</html>

JS代码如下:
// JavaScript Document 
    /* 
    *@date 2011 10 24 
    *@ author tugenhua 
    *@ email tugenhua@126.com 
    *@ 可以一个页面多次引用 
    依赖的结构 */
    <div id="tab1"> 
    <ul class="menu"> 
        <li class="current">tab1</li> 
        <li>tab2</li> 
        <li>tab3</li> 
        <li class="last-col">tab4</li> 
    </ul> 
    <div class="content-main"> 
        <div class="content">tab1</div> 
        <div class="content hide">tab2</div> 
        <div class="content hide">tab3</div> 
        <div class="content hide">tab4</div> 
    </div> 
</div> 
/*页面引用的方式 
    new tabSlider("#tab1",4); 
    #tab1 是外部ID,4 指 一共有多少个li 
*/
function tabSlider(obj,count){ 
    var _this = this; 
        _this.obj = obj; 
        _this.count = count; 
        _this.time = 2000;//停留的时间 
        _this.n = 0; 
        var  t; 
        this.slider = function(){ 
            $(_this.obj + " .menu li").bind("mouseover",function(event){ 
                $(event.target).addClass("current").siblings().removeClass("current"); 
                var index = $(_this.obj + " .menu li").index(this); 
                $(_this.obj + " .content-main .content").eq(index).show().siblings().hide(); 
                _this.n = index;     
            })   
        } 
        this.addhover = function(){ 
            $(_this.obj).hover(function(){clearInterval(t);},function(){t=setInterval(_this.autoplay,_this.time)});  
        } 
        this.autoplay = function(){ 
            _this.n = _this.n >=(_this.count-1)? 0 : ++_this.n; 
            $(_this.obj + " .menu li").eq(_this.n).trigger("mouseover");     
        }    
        this.factory = function(){ 
            this.slider(); 
            this.addhover(); 
            t = setInterval(this.autoplay,_this.time);   
        } 
        this.factory(); 
}

下面来说说下我封装这个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 最后用个函数 来渲染上面的函数 调用上面的函数
this.factory = function(){
   this.slider();
   this.addhover();
   t = setInterval(this.autoplay,_this.time);
  }
  this.factory();
Javascript 相关文章推荐
用jQuery获取IE9下拉框默认值问题探讨
Jul 22 Javascript
浅谈JavaScript字符串与数组
Jun 03 Javascript
再谈JavaScript线程
Jul 10 Javascript
JavaScript常用基础知识强化学习
Dec 09 Javascript
理解javascript中的严格模式
Feb 01 Javascript
AngularJS上拉加载问题解决方法
May 23 Javascript
javascript实现图片左右滚动效果【可自动滚动,有左右按钮】
Sep 19 Javascript
火狐和ie下获取javascript 获取event的方法(推荐)
Nov 26 Javascript
vue实现模态框的通用写法推荐
Feb 26 Javascript
jQuery实现的简单对话框拖动功能示例
Jun 05 jQuery
在vue中多次调用同一个定义全局变量的实例
Sep 25 Javascript
layui动态加载多表头的实例
Sep 05 Javascript
JS图片根据鼠标滚动延时加载的实例代码
Jul 13 #Javascript
js confirm()方法的使用方法实例
Jul 13 #Javascript
js获取GridView中行数据的两种方法 分享
Jul 13 #Javascript
通过JQuery实现win8一样酷炫的动态磁贴效果(示例代码)
Jul 13 #Javascript
浅析ajax请求json数据并用js解析(示例分析)
Jul 13 #Javascript
网页前端优化之滚动延时加载图片示例
Jul 13 #Javascript
JavaScript获取FCK编辑器信息的具体方法
Jul 12 #Javascript
You might like
谈一谈收音机的高放电路
2021/03/02 无线电
PHP调用MySQL的存储过程的实现代码
2008/08/12 PHP
PHP extract 将数组拆分成多个变量的函数
2010/06/30 PHP
百度地图API应用之获取用户的具体位置
2014/06/10 PHP
PHP7之Mongodb API使用详解
2015/12/26 PHP
PHP页面输出搜索后跳转下一页的处理方法
2016/09/30 PHP
详谈配置phpstorm完美支持Codeigniter(CI)代码自动完成(代码提示)
2017/04/07 PHP
js+FSO遍历文件夹下文件并显示
2007/03/07 Javascript
在页面上点击任一链接时触发一个事件的代码
2007/04/07 Javascript
javascript背投广告代码的完善
2008/04/08 Javascript
Jquery插件easyUi表单验证提交(示例代码)
2013/12/30 Javascript
javascript定义变量时有var和没有var的区别探讨
2014/07/21 Javascript
jquery插件jSignature实现手动签名
2015/05/04 Javascript
javascript引用类型之时间Date和数组Array
2015/08/27 Javascript
数据结构中的各种排序方法小结(JS实现)
2016/07/23 Javascript
JavaScript的new date等日期函数在safari中遇到的坑
2016/10/24 Javascript
easyui form validate总是返回false的原因及解决方法
2016/11/07 Javascript
vue利用better-scroll实现轮播图与页面滚动详解
2017/10/20 Javascript
JavaScript基础心法 数据类型
2018/03/05 Javascript
Vue中的$set的使用实例代码
2018/10/08 Javascript
layui中的switch开关实现方法
2019/09/03 Javascript
分析python请求数据
2018/08/19 Python
Python 字符串换行的多种方式
2018/09/06 Python
PyQt5重写QComboBox的鼠标点击事件方法
2019/06/25 Python
在Python中画图(基于Jupyter notebook的魔法函数)
2019/10/28 Python
在Python中使用K-Means聚类和PCA主成分分析进行图像压缩
2020/04/10 Python
Python 执行矩阵与线性代数运算
2020/08/01 Python
HTML5新增form控件和表单属性实例代码详解
2019/05/15 HTML / CSS
国际花店:Pickup Flowers
2020/04/10 全球购物
澳大利亚在线批发商:Simply Wholesale
2021/02/24 全球购物
如何定义一个可复用的服务
2014/09/30 面试题
jQuery treeview树形结构应用
2021/03/24 jQuery
电焊工岗位职责
2014/03/06 职场文书
捐款通知怎么写
2015/04/24 职场文书
环保建议书范文
2015/09/14 职场文书
2016猴年春节问候语
2015/11/11 职场文书