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的一些总结
Nov 03 Javascript
JavaScript DOM 学习第二章 编辑文本
Feb 19 Javascript
网页前台通过js非法字符过滤代码(骂人的话等等)
May 26 Javascript
YUI Compressor压缩JavaScript原理及微优化
Jan 07 Javascript
jquery实现图片等比例缩放以及max-width在ie中不兼容解决
Mar 21 Javascript
jquery遍历checkbox介绍
Feb 21 Javascript
AngularJS封装$http.post()实例详解
May 06 Javascript
详解angularJS动态生成的页面中ng-click无效解决办法
Jun 19 Javascript
jQuery简单实现的HTML页面文本框模糊匹配查询功能完整示例
May 09 jQuery
在vue中对数组值变化的监听与重新响应渲染操作
Jul 17 Javascript
vue实现拖拽进度条
Mar 01 Vue.js
教你使用vscode 搭建react-native开发环境
Jul 07 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
DISCUZ 论坛管理员密码忘记的解决方法
2009/05/14 PHP
解析thinkphp基本配置 convention.php
2013/06/18 PHP
php与java通过socket通信的实现代码
2013/10/21 PHP
ThinkPHP中U方法的使用浅析
2014/06/13 PHP
PHP7扩展开发之基于函数方式使用lib库的方法详解
2018/01/15 PHP
php处理多图上传压缩代码功能
2018/06/13 PHP
laravel框架中间件 except 和 only 的用法示例
2019/07/12 PHP
跟随鼠标旋转的文字
2006/11/30 Javascript
基于jQuery的让非HTML5浏览器支持placeholder属性的代码
2011/05/24 Javascript
Javascript 面向对象(二)封装代码
2012/05/23 Javascript
javascript中获取下个月一号,是星期几
2012/06/01 Javascript
JQuery筛选器全系列介绍
2013/08/27 Javascript
JavaScript动态修改网页元素内容的方法
2015/03/21 Javascript
使用Raygun对Node.js应用进行错误处理的方法
2015/06/23 Javascript
基于Jquery制作图片文字排版预览效果附源码下载
2015/11/18 Javascript
给easyui的datebox控件添加清空按钮的实现方法
2016/11/09 Javascript
JS原型继承四步曲及原型继承图一览
2017/11/28 Javascript
Vue.js实现可配置的登录表单代码详解
2018/03/29 Javascript
基于Vue实现电商SKU组合算法问题
2019/05/29 Javascript
ES6 Proxy实现Vue的变化检测问题
2019/06/11 Javascript
关于layui的下拉搜索框异步加载数据的解决方法
2019/09/28 Javascript
JavaScript闭包相关知识解析
2019/10/19 Javascript
Webpack设置环境变量的一些误区详解
2019/12/19 Javascript
[03:49]显微镜下的DOTA2第十五期—VG登基之路完美团
2014/06/24 DOTA
Python生成随机验证码的两种方法
2015/12/22 Python
Python的时间模块datetime详解
2017/04/17 Python
python中set()函数简介及实例解析
2018/01/09 Python
python 列表删除所有指定元素的方法
2018/04/19 Python
PyTorch学习笔记之回归实战
2018/05/28 Python
Python读取txt文件数据的方法(用于接口自动化参数化数据)
2018/06/27 Python
美国围栏公司:Walpole Outdoors
2019/11/19 全球购物
一道SQL存储过程面试题
2016/10/07 面试题
习近平在党的群众路线教育实践活动总结大会上的讲话
2014/10/21 职场文书
感谢信的格式
2015/01/21 职场文书
2015年领导班子工作总结
2015/05/23 职场文书
python使用pywinauto驱动微信客户端实现公众号爬虫
2021/05/19 Python