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 异步调用框架 (Part 4 - 链式调用)
Aug 04 Javascript
js验证整数加保留小数点的简单实例
Dec 02 Javascript
jquery提交form表单时禁止重复提交的方法
Feb 13 Javascript
处理文本部分内容的TextRange对象应用实例
Jul 29 Javascript
jQuery中before()方法用法实例
Dec 25 Javascript
浅析JavaScriptSerializer类的序列化与反序列化
Nov 22 Javascript
JavaScript闭包和范围实例详解
Dec 19 Javascript
bootstrap实现每隔5秒自动轮播效果
Dec 20 Javascript
微信小程序 选项卡的简单实例
May 24 Javascript
微信小程序实现animation动画
Jan 26 Javascript
Vue多组件仓库开发与发布详解
Feb 28 Javascript
Node.js Stream ondata触发时机与顺序的探索
Mar 08 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
解析Ubuntu下crontab命令的用法
2013/06/24 PHP
Smarty foreach控制循环次数的实现详解
2013/07/03 PHP
php设计模式之简单工厂模式详解
2014/09/04 PHP
php中使用gd库实现远程图片下载实例
2015/05/12 PHP
详解Window7 下开发php扩展
2015/12/31 PHP
PHP Laravel 上传图片、文件等类封装
2017/08/16 PHP
PHP实现的折半查找算法示例
2017/12/19 PHP
Yii2语言国际化自动配置详解
2018/08/22 PHP
javascript textContent与innerText的异同分析
2010/10/22 Javascript
php对mongodb的扩展(初识如故)
2012/11/11 Javascript
简单的两种Extjs formpanel加载数据的方式
2013/11/09 Javascript
yui3的AOP(面向切面编程)和OOP(面向对象编程)
2015/05/01 Javascript
举例讲解JavaScript中关于对象操作的相关知识
2015/11/16 Javascript
详解Bootstrap的aria-label和aria-labelledby应用
2016/01/04 Javascript
JS组件Bootstrap Table使用方法详解
2016/02/02 Javascript
使用js获取地址栏参数的方法推荐(超级简单)
2016/06/14 Javascript
BootStrap Datepicker 插件修改为默认中文的实现方法
2017/02/10 Javascript
JavaScript实现滑动导航栏效果
2017/08/30 Javascript
Node.js实现mysql连接池使用事务自动回收连接的方法示例
2018/02/03 Javascript
JQuery中queue方法用法示例
2019/01/31 jQuery
vue实现todolist功能、todolist组件拆分及todolist的删除功能
2019/04/11 Javascript
一个Java程序猿眼中的前后端分离以及Vue.js入门(推荐)
2019/04/19 Javascript
vue-dplayer 视频播放器实例代码
2019/11/08 Javascript
python实现爬虫下载美女图片
2015/07/14 Python
python 检查文件mime类型的方法
2018/12/08 Python
python实现生成字符串大小写字母和数字的各种组合
2019/01/01 Python
CSS3实现头像旋转效果
2017/03/13 HTML / CSS
html5简介及新增功能介绍
2020/05/18 HTML / CSS
德国鞋子网上商店:Omoda.de
2017/03/31 全球购物
查询优化的一般准则有哪些
2015/03/08 面试题
市场安全管理制度
2014/01/26 职场文书
《放飞蜻蜓》教学反思
2014/04/27 职场文书
环卫工人先进事迹材料
2014/06/02 职场文书
综合测评个人总结
2015/03/03 职场文书
《地震中的父与子》教学反思
2016/02/16 职场文书
2016年社区六一儿童节活动总结
2016/04/06 职场文书