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 相关文章推荐
jquery.cvtooltip.js 基于jquery的气泡提示插件
Nov 19 Javascript
javascript中的绑定与解绑函数应用示例
Jun 24 Javascript
jquery使用淘宝接口跨域查询手机号码归属地实例
Nov 28 Javascript
jquery列表拖动排列(由项目提取相当好用)
Jun 17 Javascript
微信小程序 Flex布局详解
Oct 09 Javascript
seajs中模块依赖的加载处理实例分析
Oct 10 Javascript
vue的传参方式汇总和router使用技巧
May 22 Javascript
vue组件实践之可搜索下拉框功能
Nov 25 Javascript
一些手写JavaScript常用的函数汇总
Apr 16 Javascript
Vue CLI2升级至Vue CLI3的方法步骤
May 20 Javascript
深入理解JavaScript 箭头函数
May 30 Javascript
layui select 禁止点击的实现方法
Sep 05 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生成自适应大小的缩略图类及使用方法分享
2014/05/06 PHP
ThinkPHP模板自定义标签使用方法
2014/06/26 PHP
PHP中Memcache操作类及用法实例
2014/12/12 PHP
Thinkphp3.2.3分页使用实例解析
2016/07/28 PHP
php实现mysql连接池效果实现代码
2018/01/25 PHP
jQuery学习基础知识小结
2010/11/25 Javascript
location对象的属性和方法应用(解析URL)
2013/04/12 Javascript
js动态调用css属性的小规律及实例说明
2013/12/28 Javascript
JS实用的动画弹出层效果实例
2015/05/05 Javascript
JavaScript截取指定长度字符串点击可以展开全部代码
2015/12/04 Javascript
vue等两个接口都返回结果再执行下一步的实例
2020/09/08 Javascript
vue+swiper实现左右滑动的测试题功能
2020/10/30 Javascript
动感网页相册 python编写简单文件夹内图片浏览工具
2016/08/17 Python
Python实现的破解字符串找茬游戏算法示例
2017/09/25 Python
基于Django的ModelForm组件(详解)
2017/12/07 Python
python 通过类中一个方法获取另一个方法变量的实例
2019/01/22 Python
使用Python将Mysql的查询数据导出到文件的方法
2019/02/25 Python
Python使用numpy模块实现矩阵和列表的连接操作方法
2019/06/26 Python
python multiprocessing多进程变量共享与加锁的实现
2019/10/02 Python
python对验证码降噪的实现示例代码
2019/11/12 Python
Centos7下源码安装Python3 及shell 脚本自动安装Python3的教程
2020/03/07 Python
Python基于numpy模块实现回归预测
2020/05/14 Python
Django模板报TemplateDoesNotExist异常(亲测可行)
2020/12/18 Python
关于HTML5 Placeholder新标签低版本浏览器下不兼容的问题分析及解决办法
2016/01/27 HTML / CSS
英国排名第一的礼品体验公司:Red Letter Days
2018/08/16 全球购物
如何在Cookie里面保存Unicode和国际化字符
2013/05/25 面试题
介绍一下gcc特性
2015/10/31 面试题
房地产销售大学生自我评价分享
2013/11/11 职场文书
乡镇消防工作实施方案
2014/03/27 职场文书
物业管理专业自荐信
2014/07/01 职场文书
党员民主生活会整改措施
2014/09/26 职场文书
商家认证委托书格式
2014/10/16 职场文书
满月酒邀请函
2015/01/30 职场文书
秦兵马俑导游词
2015/02/02 职场文书
聚会通知怎么写
2015/04/23 职场文书
2016习总书记系列重要讲话心得体会
2016/01/15 职场文书