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 相关文章推荐
基于Web标准的UI组件 — 树状菜单(2)
Sep 18 Javascript
javascript:以前写的xmlhttp池,代码
May 18 Javascript
JavaScript随机生成信用卡卡号的方法
Apr 07 Javascript
使用jspdf生成pdf报表
Jul 03 Javascript
jQuery实现平滑滚动的标签分栏切换效果
Aug 28 Javascript
jQuery基于函数重载实现自定义Alert函数样式的方法
Jul 27 Javascript
ES6中Symbol类型用法实例详解
Apr 06 Javascript
微信小程序页面跳转功能之从列表的item项跳转到下一个页面的方法
Nov 27 Javascript
Angular中管道操作符(|)的使用方法
Dec 15 Javascript
vue中如何实现后台管理系统的权限控制的方法示例
Sep 19 Javascript
浅谈针对Vue相同路由不同参数的刷新问题
Sep 29 Javascript
7个你应该知道的JS原生错误类型
Apr 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获取windows登录用户名的方法
2014/06/24 PHP
PHP curl实现抓取302跳转后页面的示例
2014/07/04 PHP
用JavaScript页面不刷新时全选择,全删除(GridView)
2009/04/14 Javascript
客户端 使用XML DOM加载json数据的方法
2010/09/28 Javascript
Jquery仿IGoogle实现可拖动窗口示例代码
2014/08/22 Javascript
jQuery中:visible选择器用法实例
2014/12/30 Javascript
Js获取图片原始宽高的实现代码
2016/05/17 Javascript
基于jQuery实现一个marquee无缝滚动的插件
2017/03/09 Javascript
JS获取本地地址及天气的方法实例小结
2019/05/10 Javascript
Ant Design Pro 下实现文件下载的实现代码
2019/12/03 Javascript
vue仿淘宝滑动验证码功能(样式模仿)
2019/12/10 Javascript
jquery传参及获取方式(两种方式)
2020/02/13 jQuery
JS中的const命令你真懂它吗
2020/03/08 Javascript
[01:18:43]2014 DOTA2华西杯精英邀请赛5 24 iG VS DK
2014/05/25 DOTA
python网络编程之文件下载实例分析
2015/05/20 Python
详解Python编程中对Monkey Patch猴子补丁开发方式的运用
2016/05/27 Python
Python实现的根据文件名查找数据文件功能示例
2018/05/02 Python
Pycharm如何自动生成头文件注释
2020/11/14 Python
pycharm 多行批量缩进和反向缩进快捷键介绍
2021/01/15 Python
Bibloo奥地利:购买女装、男装、童装、鞋和配件
2018/10/18 全球购物
Probikekit欧盟:在线公路自行车专家
2019/07/12 全球购物
美国户外服装和装备购物网站:Outland USA
2020/03/22 全球购物
北美最大的参茸药食商城:德成行
2020/12/06 全球购物
在校生党员自我评价
2013/09/25 职场文书
研究生自荐信
2013/10/09 职场文书
仓库班组长岗位职责
2013/12/12 职场文书
社区志愿者心得体会
2014/01/03 职场文书
应届毕业生简历自我评价
2014/01/31 职场文书
大专毕业生求职信
2014/07/05 职场文书
2014年学习部工作总结
2014/11/12 职场文书
考勤制度通知
2015/04/25 职场文书
2019公司管理制度
2019/04/19 职场文书
pygame面向对象的飞行小鸟实现(Flappy bird)
2021/04/01 Python
pandas中DataFrame检测重复值的实现
2021/05/26 Python
教你怎么用PyCharm为同一服务器配置多个python解释器
2021/05/31 Python
各国货币符号大全
2022/02/17 杂记