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 相关文章推荐
基于jquery实现的一个选择中国大学的弹框 (数据、步骤、代码)
Jul 26 Javascript
jQuery简单实现两级下拉菜单效果代码
Sep 15 Javascript
jQuery实现的超酷苹果风格图标滑出菜单效果代码
Sep 16 Javascript
php main 与 iframe 相互通讯类(js+php同域/跨域)
Sep 14 Javascript
聊聊那些使用前端Javascript实现的机器学习类库
Sep 18 Javascript
js中apply()和call()的区别与用法实例分析
Aug 14 Javascript
vue实现条件判断动态绑定样式的方法
Sep 29 Javascript
基于vue实现移动端圆形旋钮插件效果
Nov 28 Javascript
js中位运算的运用实例分析
Dec 11 Javascript
JavaScript ES6 Class类实现原理详解
May 08 Javascript
ant design vue中日期选择框混合时间选择器的用法说明
Oct 27 Javascript
vue-cli3.x配置全局的scss的时候报错问题及解决
Apr 30 Vue.js
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
轻松入门: 煮好咖啡的七个诀窍
2021/03/03 冲泡冲煮
php 用checkbox一次性删除多条记录的方法
2010/02/23 PHP
PHP中基本符号及使用方法
2010/03/23 PHP
PHP统计当前在线用户数实例讲解
2015/10/21 PHP
PHP实现补齐关闭的HTML标签
2016/03/22 PHP
PHP 7安装调试工具Xdebug扩展的方法教程
2017/06/17 PHP
PHP多进程之pcntl_fork的实例详解
2017/10/15 PHP
Laravel统计一段时间间隔的数据方法
2019/10/09 PHP
javascript判断单选框或复选框是否选中方法集锦
2007/04/04 Javascript
验证用户是否修改过页面的数据的实现方法
2008/09/26 Javascript
jQuery 学习第五课 Ajax 使用说明
2010/05/17 Javascript
javascript自定义函数参数传递为字符串格式
2014/07/29 Javascript
JavaScript检测字符串中是否含有html标签实现方法
2015/07/01 Javascript
javascript事件绑定学习要点
2016/03/09 Javascript
JS 全屏和退出全屏详解及实例代码
2016/11/07 Javascript
动态加载css方法实现和深入解析
2017/01/18 Javascript
jquery.tableSort.js表格排序插件使用方法详解
2020/08/12 Javascript
Canvas 绘制粒子动画背景
2017/02/15 Javascript
Vue实现6位数密码效果
2018/08/18 Javascript
vue+render+jsx实现可编辑动态多级表头table的实例代码
2020/04/01 Javascript
python 示例分享---逻辑推理编程解决八皇后
2014/07/20 Python
Python入门之后再看点什么好?
2018/03/05 Python
Python使用matplotlib和pandas实现的画图操作【经典示例】
2018/06/13 Python
python编写简易聊天室实现局域网内聊天功能
2018/07/28 Python
通过python实现随机交换礼物程序详解
2019/07/10 Python
python使用装饰器作日志处理的方法
2019/07/11 Python
Python Django切换MySQL数据库实例详解
2019/07/16 Python
python通过opencv实现图片裁剪原理解析
2020/01/19 Python
python 绘制国旗的示例
2020/09/27 Python
全球摩托车装备领导者:RevZilla
2017/09/04 全球购物
伦敦著名的运动鞋综合商店:Footpatrol
2019/03/25 全球购物
消防安全宣传标语
2014/06/07 职场文书
党风廉政承诺书2016
2016/03/25 职场文书
python数据库批量插入数据的实现(executemany的使用)
2021/04/30 Python
Python实现排序方法常见的四种
2021/07/15 Python
分享Python异步爬取知乎热榜
2022/04/12 Python