JQuery Tab选项卡效果代码改进版


Posted in Javascript onApril 01, 2010

介绍的是基于JQuery实现的一个选项卡效果,重点体现在HTML里没有内联事件处理程序,而是定义在js文件里,做到行为与结构的分离。在实际应用过程中,只 要保证选项卡模块结构代码的完整性,就可以任意添加N个同类选项卡,不需要手动在HTML里绑定事件处理程序以及给要隐藏显示的内容层添加ID。
在这里,我又做了部分的修改,增加了选项卡可自动切换功能,以及选项卡点击相应还是鼠标放上后相应的参数,同时依然支持多次调用。
现在,我把代码贴上,与众博友共享
这是js脚本

/* jquery-fn-accordion v0 
* Based on jQuery JavaScript Library v3 
* http://jquery.com/ 
* 
* The author of the following code: miqi2214 , wbpbest 
* Blog:eycbest.cnblogs.com , miqi2214.cnblogs.com 
* Date: 2010-3-10 
*/ 
//注意:如果调试出错,请检查您引用的jquery版本号,当前引用版本为1.3 
//参数说明: 
//tabList:包裹选项卡的父级层 
//tabTxt :包裹内容层的父级层 
//options.currentTab:激活选项卡的序列号 
//options.defaultClass:当前选项卡激活状态样式名,默认名字为“current” 
//isAutoPlay:是否自动切换 
//stepTime:切换间隔时间 
//switchingMode:切换方式('c'表示click切换;'o'表示mouseover切换) 
//调用方式 如本页最下方代码 
$.fn.tabs = function(tabList, tabTxt, options) { 
var _tabList = $(this).find(tabList); 
var _tabTxt = $(this).find(tabTxt); 
//为了简化操作,强制规定选项卡必须用li标签实现 
var tabListLi = _tabList.find("li"); 
var defaults = { currentTab: 0, defaultClass: "current", isAutoPlay: false, stepTime: 2000, switchingMode: "c" }; 
var o = $.extend({}, defaults, options); 
var _isAutoPlay = o.isAutoPlay; 
var _stepTime = o.stepTime; 
var _switchingMode = o.switchingMode; 
_tabList.find("li:eq(" + o.currentTab + ")").addClass(o.defaultClass); 
//强制规定内容层必须以div来实现 
_tabTxt.children("div").each(function(i) { 
$(this).attr("id", "wp_div" + i); 
}).eq(o.currentTab).css({ "display": "block" }); 
tabListLi.each( 
function(i) { 
$(tabListLi[i]).mouseover( 
function() { 
if (_switchingMode == "o") { 
$(this).click(); 
} 
_isAutoPlay = false; 
} 
); 
$(tabListLi[i]).mouseout( 
function() { 
_isAutoPlay = true; 
} 
) 
} 
); 
_tabTxt.each( 
function(i) { 
$(_tabTxt[i]).mouseover( 
function() { 
_isAutoPlay = false; 
} 
); 
$(_tabTxt[i]).mouseout( 
function() { 
_isAutoPlay = true; 
} 
) 
}); 
// } 
// else { 
tabListLi.each( 
function(i) { 
$(tabListLi[i]).click( 
function() { 
if ($(this).className != o.defaultClass) { 
$(this).addClass(o.defaultClass).siblings().removeClass(o.defaultClass); 
} 
if ($.browser.msie) { 
_tabTxt.children("div").eq(i).siblings().css({ "display": "none" }); 
_tabTxt.children("div").eq(i).fadeIn(600); 
} else { 
_tabTxt.children("div").eq(i).css({ "display": "block" }).siblings().css({ "display": "none" }); //标准样式 
} 
} 
) 
} 
); 
// } 
function selectMe(oo) { 
if (oo != null && oo.html() != null && _isAutoPlay) { 
oo.click(); 
} 
if (oo.html() == null) { 
selectMe(_tabList.find("li").eq(0)); 
} else { 
window.setTimeout(selectMe, _stepTime, oo.next()); 
} 
} 
if (_isAutoPlay) { 
//alert("_isAutoPlay:" + _isAutoPlay); 
selectMe(_tabList.find("li").eq(o.currentTab)); 
} 
//alert(_isAutoPlay); 
return this; 
}; 
var userName = "wbpbest"; 
var __sti = setInterval; 
window.setInterval = function(callback, timeout, param) { 
var args = Array.prototype.slice.call(arguments, 2); 
var _cb = function() { 
callback.apply(null, args); 
} 
__sti(_cb, timeout); 
} 
//window.setInterval(hello,3000,userName); 
var __sto = setTimeout; 
window.setTimeout = function(callback, timeout, param) { 
var args = Array.prototype.slice.call(arguments, 2); 
var _cb = function() { 
callback.apply(null, args); 
} 
__sto(_cb, timeout); 
}

演示地址:http://demo.3water.com/js/wbpbest/index.html

打包下载地址 https://3water.com/jiaoben/25569.html

Javascript 相关文章推荐
用按钮控制iframe显示的网页实现方法
Feb 04 Javascript
JS获取后台Cookies值的小例子
Mar 04 Javascript
Javascript实现飞动广告效果的方法
May 25 Javascript
JavaScript中的parse()方法使用简介
Jun 12 Javascript
AngularJS ng-mousedown 指令
Aug 02 Javascript
Angular下H5上传图片的方法(可多张上传)
Jan 09 Javascript
微信小程序 scroll-view隐藏滚动条详解
Jan 16 Javascript
jQuery.cookie.js实现记录最近浏览过的商品功能示例
Jan 23 Javascript
JS控件bootstrap suggest plugin使用方法详解
Mar 25 Javascript
jquery append与appendTo方法比较
May 24 jQuery
node 命令方式启动修改端口的方法
May 12 Javascript
Vue.Draggable拖拽功能的配置使用方法
Jul 29 Javascript
JQuery autocomplete 使用手册
Apr 01 #Javascript
JavaScript 弹出窗体点击按钮返回选择数据的实现
Apr 01 #Javascript
js 实现打印网页中定义的部分内容的代码
Apr 01 #Javascript
js prototype截取字符串函数
Apr 01 #Javascript
javascript getElementsByClassName函数
Apr 01 #Javascript
JS getStyle获取最终样式函数代码
Apr 01 #Javascript
Javascript 通过json自动生成Dom的代码
Apr 01 #Javascript
You might like
php echo 输出字符串函数详解
2010/05/13 PHP
一个显示某段时间内每个月的方法 返回由这些月份组成的数组
2012/05/16 PHP
php找出指定范围内回文数且平方根也是回文数的方法
2015/03/23 PHP
php 数组元素快速去重
2017/05/05 PHP
JavaScript具有类似Lambda表达式编程能力的代码(改进版)
2010/09/14 Javascript
JavaScript中的正则表达式简明总结
2014/04/04 Javascript
js生成动态表格并为每个单元格添加单击事件的方法
2014/04/14 Javascript
JavaScript实现为input与textarea自定义hover,focus效果的方法
2015/08/21 Javascript
JS实现的不规则TAB选项卡效果代码
2015/09/18 Javascript
JS实现的论坛Ajax打分效果完整实例
2015/10/31 Javascript
JavaScript中对DOM节点的访问、创建、修改、删除
2015/11/16 Javascript
jquery实现上传文件大小类型的验证例子(推荐)
2016/06/25 Javascript
表单中单选框添加选项和移除选项
2016/07/04 Javascript
Vim快速合并行及vim 将文件所有行合并到一行
2017/11/27 Javascript
浅谈Javascript中的对象和继承
2019/04/19 Javascript
详解javascript中var与ES6规范中let、const区别与用法
2020/01/11 Javascript
webpack.DefinePlugin与cross-env区别详解
2020/02/23 Javascript
[42:39]老党炸弹人试玩视频
2014/09/03 DOTA
python编写网页爬虫脚本并实现APScheduler调度
2014/07/28 Python
Python实现针对中文排序的方法
2017/05/09 Python
利用Python暴力破解zip文件口令的方法详解
2017/12/21 Python
详解PyCharm配置Anaconda的艰难心路历程
2018/08/13 Python
python简单操作excle的方法
2018/09/12 Python
Python设置matplotlib.plot的坐标轴刻度间隔以及刻度范围
2019/06/25 Python
Python定时任务随机时间执行的实现方法
2019/08/14 Python
django 快速启动数据库客户端程序的方法示例
2019/08/16 Python
使用 Python 在京东上抢口罩的思路详解
2020/02/27 Python
python爬虫请求头的使用
2020/12/01 Python
在canvas上实现元素图片镜像翻转动画效果的方法
2018/03/20 HTML / CSS
Expedia法国:全球最大在线旅游公司
2018/09/30 全球购物
学习心理学的体会
2014/11/07 职场文书
2015年英语教师工作总结
2015/05/20 职场文书
和谐拯救危机观后感
2015/06/15 职场文书
制定企业培训计划的五大要点!
2019/07/10 职场文书
教你怎么用Python实现多路径迷宫
2021/04/29 Python
Nginx本地配置SSL访问的实例教程
2022/05/30 Servers