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 相关文章推荐
A标签触发onclick事件而不跳转的多种解决方法
Jun 27 Javascript
JQuery表单验证插件EasyValidator用法分析
Nov 15 Javascript
node.js中的fs.close方法使用说明
Dec 17 Javascript
基于JavaScript如何制作遮罩层对话框
Jan 26 Javascript
Js的Array数组对象详解
Feb 22 Javascript
jQuery中判断对象是否存在的方法汇总
Feb 24 Javascript
基于JQuery实现图片上传预览与删除操作
May 24 Javascript
Boostrap栅格系统与自己额外定义的媒体查询的冲突问题
Feb 19 Javascript
使用Bootstrap + Vue.js实现表格的动态展示、新增和删除功能
Nov 27 Javascript
利用CDN加速react webpack打包后的文件详解
Feb 22 Javascript
使用JavaScript计算前一天和后一天的思路详解
Dec 20 Javascript
深入浅析React中diff算法
May 19 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
Oracle Faq(Oracle的版本)
2006/10/09 PHP
PHP中MD5函数使用实例代码
2008/06/07 PHP
Cannot modify header information错误解决方法
2008/10/08 PHP
超小PHP小马小结(方便查找后门的朋友)
2012/05/05 PHP
PHP 绘制网站登录首页图片验证码
2016/04/12 PHP
常用js脚本
2006/12/03 Javascript
Jquery选择器 $实现原理
2009/12/02 Javascript
Chrome中JSON.parse的特殊实现
2011/01/12 Javascript
获取内联和链接中的样式(js代码)
2013/04/11 Javascript
JS生成不重复随机数组的函数代码
2014/06/10 Javascript
javascript数组遍历for与for in区别详解
2014/12/04 Javascript
javascript实现全局匹配并替换的方法
2015/04/27 Javascript
JavaScript实现ASC转汉字及汉字转ASC的方法
2016/01/23 Javascript
浅谈js里面的InttoStr和StrtoInt
2016/06/14 Javascript
BooStrap对导航条的改造实践小结
2016/09/21 Javascript
利用vue.js插入dom节点的方法
2017/03/15 Javascript
Angular2利用组件与指令实现图片轮播组件
2017/03/27 Javascript
node.js中fs.stat与fs.fstat的区别详解
2017/06/01 Javascript
JS原生轮播图的简单实现(推荐)
2017/07/22 Javascript
原生js封装的ajax方法示例
2018/08/02 Javascript
使用imba.io框架得到比 vue 快50倍的性能基准
2019/06/17 Javascript
Python 用户登录验证的小例子
2013/03/06 Python
Python fileinput模块使用实例
2015/06/03 Python
玩转python爬虫之正则表达式
2016/02/17 Python
使用pyecharts在jupyter notebook上绘图
2020/04/23 Python
pytorch中torch.max和Tensor.view函数用法详解
2020/01/03 Python
Django中modelform组件实例用法总结
2020/02/10 Python
美国肌肉和力量商店:Muscle & Strength
2019/06/22 全球购物
优质有机椰子产品:Dr. Goerg
2019/09/24 全球购物
商场开业庆典策划方案
2014/06/02 职场文书
社区综治宣传月活动总结
2014/07/02 职场文书
家庭困难证明
2014/10/12 职场文书
党员对照检查剖析材料
2014/10/13 职场文书
六查六看六改心得体会
2014/10/14 职场文书
财务审计整改报告
2014/11/06 职场文书
Python基本知识点总结
2022/04/07 Python