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 相关文章推荐
可以用来调试JavaScript错误的解决方案
Aug 07 Javascript
页面只有一个text的时候,回车自动submit的解决方法
Aug 12 Javascript
使用jQuery实现验证上传图片的格式与大小
Dec 03 Javascript
JQuery CheckBox(复选框)操作方法汇总
Apr 15 Javascript
vue组件实例解析
Jan 10 Javascript
Web开发中客户端的跳转与服务器端的跳转的区别
Mar 05 Javascript
AngularJS动态绑定ng-options的ng-model实例代码
Jun 21 Javascript
vue的diff算法知识点总结
Mar 29 Javascript
vue里面v-bind和Props 利用props绑定动态数据的方法
Aug 27 Javascript
微信小程序开发(二):页面跳转并传参操作示例
Jun 01 Javascript
jQuery实现电梯导航模块
Dec 22 jQuery
JavaScript圣杯布局与双飞翼布局实现案例详解
Aug 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
vBulletin Forum 2.3.xx SQL Injection
2006/10/09 PHP
PHP中对各种加密算法、Hash算法的速度测试对比代码
2014/07/08 PHP
php实现以只读方式打开文件的方法
2015/03/16 PHP
PHP中list()函数用法实例简析
2016/01/08 PHP
ThinkPHP实现更新数据实例详解(demo)
2016/06/29 PHP
PHP使用栈解决约瑟夫环问题算法示例
2017/08/27 PHP
php实现每日签到功能
2018/11/29 PHP
laravel框架使用FormRequest进行表单验证,验证异常返回JSON操作示例
2020/02/18 PHP
TP5框架实现一次选择多张图片并预览的方法示例
2020/04/04 PHP
jQuery之字体大小的设置方法
2014/02/27 Javascript
jQuery标签编辑插件Tagit使用指南
2015/04/21 Javascript
javascript去掉代码里面的注释
2015/07/24 Javascript
AngularJS基础 ng-if 指令用法
2016/08/01 Javascript
JS中的hasOwnProperty()、propertyIsEnumerable()和isPrototypeOf()
2016/08/11 Javascript
vue-cli脚手架搭建的项目去除eslint验证的方法
2018/09/29 Javascript
vue接入腾讯防水墙代码
2019/05/07 Javascript
JS实现数组删除指定元素功能示例
2019/06/05 Javascript
微信小程序3D轮播实现代码
2019/09/19 Javascript
python微信公众号开发简单流程
2018/03/23 Python
Python中偏函数用法示例
2018/06/07 Python
Python列表推导式与生成器用法分析
2018/08/02 Python
用uWSGI和Nginx部署Flask项目的方法示例
2019/05/05 Python
python set集合使用方法解析
2019/11/05 Python
Python实现线性判别分析(LDA)的MATLAB方式
2019/12/09 Python
Python filter过滤器原理及实例应用
2020/08/18 Python
用Python自动清理系统垃圾的实现
2021/01/18 Python
什么是符号链接,什么是硬链接?符号链接与硬链接的区别是什么?
2014/01/19 面试题
大学生物业管理求职信
2013/10/24 职场文书
教育专业自荐书范文
2013/12/17 职场文书
大学生社会实践方案
2014/05/11 职场文书
党性锻炼的心得体会
2014/09/03 职场文书
改作风抓落实促发展心得体会
2014/09/10 职场文书
2015年学校德育工作总结
2015/04/22 职场文书
2015大学迎新标语
2015/07/16 职场文书
导游词之潮音寺
2019/09/26 职场文书
教你怎么用PyCharm为同一服务器配置多个python解释器
2021/05/31 Python