Jquery封装tab自动切换效果的具体实现
2023-06-13 09:15:03 时间
今天我这边网速真是太慢了,打开一个网页要等待很久,但是还是想写篇文章----tab自动切换因为工作中经常会碰到这样的问题所以写博客也是总结下最重要的是能分享下及以后碰到类似的可以参考下!当然这是我用Jquery来封装的页面可以调用多次调用方式 newtabSlider(obj,count);obj指容器最外层ID,count指有多个li当然要引用我这个js的话一定要按照我结构来写!下面的是我的HTML一些结构如下:
复制代码代码如下:
<divid="tab1">
<ulclass="menu">
<liclass="current">tab1</li>
<li>tab2</li>
<li>tab3</li>
<liclass="last-col">tab4</li>
</ul>
<divclass="content-main">
<divclass="content">tab1</div>
<divclass="contenthide">tab2</div>
<divclass="contenthide">tab3</div>
<divclass="contenthide">tab4</div>
</div>
</div>
结构是这样的!下面是我页面上的HTML/CSS的代码!
<metahttp-equiv="Content-Type"content="text/html;charset=utf-8"/>
<title>无标题文档</title>
<scripttype="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:1pxsolid#666;}
#tab2{width:196px;height:220px;overflow:hidden;border:1pxsolid#666;}
.menu{width:196px;height:18px;margin:0;padding:0;}
.menuli{float:left;list-style:none;width:48px;text-align:center;border-bottom:1pxsolid#666;border-right:1pxsolid#666;cursor:pointer;}
.menuli.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;}
.menuli.last-col{border-right:none;width:49px;}
</style>
<scriptsrc="AutoTab.js"></script>
</head>
<body>
<divid="tab1">
<ulclass="menu">
<liclass="current">tab1</li>
<li>tab2</li>
<li>tab3</li>
<liclass="last-col">tab4</li>
</ul>
<divclass="content-main">
<divclass="content">tab1</div>
<divclass="hide">tab2</div>
<divclass="hide">tab3</div>
<divclass="hide">tab4</div>
</div>
</div>
<br/><br/>
<divid="tab2">
<ulclass="menu">
<liclass="current">tab1</li>
<li>tab2</li>
<li>tab3</li>
<liclass="last-col">tab4</li>
</ul>
<divclass="content-main">
<divclass="content">tab1</div>
<divclass="hide">tab2</div>
<divclass="hide">tab3</div>
<divclass="hide">tab4</div>
</div>
</div>
<script>newtabSlider("#tab1",4);</script>
<script>newtabSlider("#tab2",4);</script>
</body>
</html>
JS代码如下:
//JavaScriptDocument
/*
*@date20111024
*@authortugenhua
*@emailtugenhua@126.com
*@可以一个页面多次引用
依赖的结构*/
<divid="tab1">
<ulclass="menu">
<liclass="current">tab1</li>
<li>tab2</li>
<li>tab3</li>
<liclass="last-col">tab4</li>
</ul>
<divclass="content-main">
<divclass="content">tab1</div>
<divclass="contenthide">tab2</div>
<divclass="contenthide">tab3</div>
<divclass="contenthide">tab4</div>
</div>
</div>
/*页面引用的方式
newtabSlider("#tab1",4);
#tab1是外部ID,4指一共有多少个li
*/
functiontabSlider(obj,count){
var_this=this;
_this.obj=obj;
_this.count=count;
_this.time=2000;//停留的时间
_this.n=0;
var t;
this.slider=function(){
$(_this.obj+".menuli").bind("mouseover",function(event){
$(event.target).addClass("current").siblings().removeClass("current");
varindex=$(_this.obj+".menuli").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+".menuli").eq(_this.n).trigger("mouseover");
}
this.factory=function(){
this.slider();
this.addhover();
t=setInterval(this.autoplay,_this.time);
}
this.factory();
}
下面来说说下我封装这个js的思路,因为写任何程序思路是最重要的,只要能想的清楚代码就一定能实现掉!思路说的更好听的话就是我们常说的“算法”!
1functiontabSlider(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+".menuli").eq(_this.n).trigger("mouseover");
5最后用个函数来渲染上面的函数调用上面的函数
this.factory=function(){
this.slider();
this.addhover();
t=setInterval(this.autoplay,_this.time);
}
this.factory();
相关文章
- Jquery 跳出循环
- 基于jQuery的圆环进度条函数封装详解编程语言
- jQuery图片切换插件jquery.cycle.js详解编程语言
- jQuery:$(document).ready()用法详解编程语言
- jQuery $.fn.extend()和$.extend()详解
- jQuery技巧大放送学习jquery的朋友可以看下
- JQuery插件模板制作jquery插件的朋友可以参考下
- 初窥JQuery-Jquery简介入门了解篇
- 基于jquery的bankInput银行卡账号格式化
- 当自定义数据属性为json格式字符串时jQuery的dataapi问题探讨
- jQuery学习笔记(2)--用jquery实现各种模态提示框代码及项目构架
- jQuery学习笔记(3)--用jquery(插件)实现多选项卡功能
- UpdatePanel和jQuery不兼容局部刷新jquery失效
- jquery及原生js获取select下拉框选中的值示例
- jQuery封装的获取Url中的Get参数示例
- jquery动态加载select下拉框示例代码
- 简单的ajax连接库分享(不用jquery的ajax)
- jquery字符串切割函数substring的用法说明
- jquery自动将form表单封装成json的具体实现
- js或jquery实现页面打印可局部打印
- Jquery图片延迟加载插件jquery.lazyload.js的使用方法