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 判断浏览器类型及版本
Feb 21 Javascript
jQuery UI的Dialog无法提交问题的解决方法
Jan 11 Javascript
JS获取DropDownList的value值与text值的示例代码
Jan 07 Javascript
js function定义函数的几种不错方法
Feb 27 Javascript
网站繁简切换的JS遇到页面卡死的解决方法
Mar 12 Javascript
jquery禁止输入数字以外的字符的示例(纯数字验证码)
Apr 10 Javascript
jQuery实现点击图片翻页展示效果的方法
Feb 16 Javascript
封装好的javascript前端分页插件pagination
Jan 04 Javascript
jQuery CSS3相结合实现时钟插件
Jan 08 Javascript
批量下载对路网图片并生成html的实现方法
Jun 07 Javascript
微信小程序实现折线图的示例代码
Jun 07 Javascript
详解vue中v-on事件监听指令的基本用法
Jul 22 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
Drupal7连接多个数据库及常见问题解决
2014/03/02 PHP
php与flash as3 socket通信传送文件实现代码
2014/08/16 PHP
php判断类是否存在函数class_exists用法分析
2014/11/14 PHP
PHP YII框架开发小技巧之模型(models)中rules自定义验证规则
2015/11/16 PHP
WAF的正确bypass
2017/01/05 PHP
php获取数据库结果集方法(推荐)
2017/06/01 PHP
PHP封装的数据库模型Model类完整示例【基于PDO】
2019/03/14 PHP
Yii 使用intervention/image拓展实现图像处理功能
2019/06/22 PHP
通过Javascript将数据导出到外部Excel文档的函数代码
2012/06/15 Javascript
jquery live()重复绑定的解决方法介绍
2014/01/03 Javascript
js浏览器本地存储store.js介绍及应用
2014/05/13 Javascript
用js通过url传参把数据从一个页面传到另一个页面
2014/09/01 Javascript
jQuery插件Skippr实现焦点图幻灯片特效
2015/04/12 Javascript
javascript实现网页子页面遍历回调的方法(涉及 window.frames、递归函数、函数上下文)
2015/07/27 Javascript
jQuery控制div实现随滚动条滚动效果
2016/06/07 Javascript
jQuery给指定的table动态添加删除行的操作方法
2016/10/12 Javascript
解决Window10系统下Node安装报错的问题分析
2016/12/13 Javascript
Bootstrap源码解读媒体对象、列表组和面板(10)
2016/12/26 Javascript
laydate 显示结束时间不小于开始时间的实例
2017/08/11 Javascript
Vuex的各个模块封装的实现
2020/06/05 Javascript
通过实例解析vuejs如何实现调试代码
2020/07/16 Javascript
python提示No module named images的解决方法
2014/09/29 Python
python读取oracle函数返回值
2016/07/18 Python
python 查找字符串是否存在实例详解
2017/01/20 Python
python requests使用socks5的例子
2019/07/25 Python
简单的Python调度器Schedule详解
2019/08/30 Python
Django框架model模型对象验证实现方法分析
2019/10/02 Python
使用python求解二次规划的问题
2020/02/29 Python
python实现图片素描效果
2020/09/26 Python
pandas针对excel处理的实现
2021/01/15 Python
serialVersionUID具有什么样的特征
2014/02/20 面试题
几道Java和数据库的面试题
2013/05/30 面试题
大学生感恩父母演讲稿
2014/08/28 职场文书
2014年小学工作总结
2014/11/26 职场文书
幼儿园教师求职信
2015/03/20 职场文书
小学生节水倡议书
2015/04/29 职场文书