jQuery Tab插件 用于在Tab中显示iframe,附源码和详细说明


Posted in Javascript onJune 27, 2011

作者: think8848(公司主页: http://www.cleversoft.com, QQ: 166156888, Blog: http://think8848.cnblogs.com)  转载请保留此信息


CleverTabs是一款jQuery插件,所需jQuery版本:1.6.1,jQuery UI样式版本:1.8.13;其功能为创建jQuery UI风格的Tab用于显示iframe。

本示例中符加了jQuery.contextMenu插件,我修改了其样式,使用了jQuery UI的皮肤

效果如下图:

jQuery Tab插件 用于在Tab中显示iframe,附源码和详细说明
初级应用示例:
HTML代码:
<div id="tabs"><ul></ul></div>
Javascript代码:

<script type="text/javascript"> 
$(function () { 
tabs = $('#tabs').cleverTabs(); 
tabs.add({ 
url: 'https://3water.com', 
label: 'think8848' 
}); 
}); 
</script>

CleverTabs详细说明:
CleverTabs为所有Tab的容器
var tabs; 
<script type="text/javascript"> 
$(function () { 
tabs = $('#tabs').cleverTabs({ 
//是否安装右键菜单(默认: true) 
setupContextMenu: true, 
//右键菜单定义, 右键菜单功能由jquery.contextMenu插件提供 
//详见: http://abeautifulsite.net/2008/09/jquery-context-menu-plugin/ 
//本插件中对原contextMenu插件中的样式做了修改,使用了jQuery UI皮肤 
contextMenu: { 
element: $('#contextMenuElementId'), 
handler: function (action, el, pos) { /*do something...*/ } 
}, 
//开启Tab后是否锁定(不允许关闭,默认: false) 
lock: false, 
//开启Tab后是否禁用(不允许激活和操作iframe内容,默认: false) 
disable: false, 
//当tabs中只有一个Tab时,是否锁定该Tab(默认: true) 
lockOnlyOne: true, 
//显示iframe的容器(默认创建在tabs元素中) 
panelContainer: $('#panelContainerElementId')/*, 
其中 
tabHeaderTemplate: '', //(Tab用于控制的头模板) 
tabPanelTemplate: '', //(Tab用于显示的Panel模板) 
uidGenerator: function() {} //(Tab唯一id生成器) 
功能现在不启用,等有时间完善后再启用*/ 
}); 
tabs.add({ 
url: 'https://3water.com', 
label: 'think8848' 
}); 
}); 
</script>

CleverTabs.add方法:添加一个新的Tab并使之成为激活状态,如果将要添加的url已经存在,则会激活该Tab
<script type="text/javascript"> 
var tabs = ('#tabs').cleverTabs(); 
tabs.add({ 
//必须是在tabs内唯一的id 
id: 'uniqueId', 
//将要在iframe的src属性设置的值 
url: 'iframe.src', 
//显示在Tab头上的文字 
label: 'tab header', 
//关闭本Tab时需要刷新的Tab的url(默认: null) 
closeREfresh: 'tab url', 
//关闭本Tab时需要激活的Tab的url(默认: null) 
closeActivate: 'tab url', 
//关闭本Tab时需要执行的回调函数 
callback: function () { /*do something*/ } 
}); 
</script>

CleverTabs.getCurrentTab方法:
获取当前处于激活状态的Tab
<script type="text/javascript"> 
var tabs = ('#tabs').cleverTabs(); 
var tab = tabs.getCurrentTab(); 
</script>

CleverTabs.getTabByUrl方法:
获取指定url的Tab实例
<script type="text/javascript"> 
var tabs = ('#tabs').cleverTabs(); 
var tab = tabs.getTabByUrl('https://3water.com'); 
</script>

CleverTabs.clear方法:
关闭tabs内所有未锁定的Tab
<script type="text/javascript"> 
var tabs = ('#tabs').cleverTabs(); 
var tab = tabs.clear(); 
</script>

CleverTab.deactivate方法:
使Tab页面处于未激活状态,但不建议在代码中使用
CleverTab.prevTab方法:
获取该Tab之前的Tab
<script type="text/javascript"> 
var tabs = ('#tabs').cleverTabs(); 
var tab = tabs.getTabByUrl('https://3water.com'); 
var prevTab = tab.prevTab(); 
</script>

CleverTab.nextTab方法:
获取该Tab之后的Tab
<script type="text/javascript"> 
var tabs = ('#tabs').cleverTabs(); 
var tab = tabs.getTabByUrl('https://3water.com'); 
var prevTab = tab.nextTab(); 
</script>

CleverTab.kill方法:
从tabs中移移该Tab
<script type="text/javascript"> 
var tabs = ('#tabs').cleverTabs(); 
var tab = tabs.getTabByUrl('https://3water.com'); 
tab.kill(); 
</script>

CleverTab.refresh方法:
刷新该Tab的iframe中的内容
<script type="text/javascript"> 
var tabs = ('#tabs').cleverTabs(); 
var tab = tabs.getTabByUrl('https://3water.com'); 
tab.refresh(); 
</script>

CleverTab.setDisable方法:
设置该Tab的disabled属性,设置disabled为true后,自动设置该Tab的locked属性为true
<script type="text/javascript"> 
var tabs = ('#tabs').cleverTabs(); 
var tab = tabs.getTabByUrl('https://3water.com'); 
//参数true为禁用,false或不提供值为启用 
tab.setDisable(true); 
</script>

CleverTab.setLock方法:
设置该Tab的locked属性,设置locked为true后,该Tab的不允许关闭
<script type="text/javascript"> 
var tabs = ('#tabs').cleverTabs(); 
var tab = tabs.getTabByUrl('https://3water.com'); 
//参数true为锁定,false或不提供值为解锁 
tab.setLock(true); 
</script>

------------------------------2011.06.27 更新---------------------------------
"改变不了别人,就改变自已吧"
在现在的页面中,多数情况下都可能由几部分组成,比如:Banner,Navigator,Content等,而为了工作区域变的更大,很多时候诸如Banner,Navigator或者其他的Panel都会收起来(Collapse),这个时候问题来了,当初我给tabs定义了width: 80%; height: 90%; 现在tabs的width和height发生了变化,可是内部的Tab页面还没有收到这个变化,它还是按照之前的size显示呢,更要命的是resize事件居然只有window和body才有,div居然不支持此事件!真不知道他们是怎么想的...在之前的cleverTabs中,我绑定了window.resize事件,但是问题在于我上面举的例子中,window的size实际上没有发生变化,甚至body也没有,但是tabs的大小发生变化了,在这种情况下,如果您使用了默认的tabPenelContainer,那一定得处理tabs的resize事件,可是tabs就是一个div嘛,哪来的resize?昨晚在睡前突然想到个办法,既然能"改变不了别人,就改变自已",那么就能"自已处理不了的事,就交给别人去处理吧"。把resize“外包”出去算了。于是对原来的代码做了修改,在CleverTabs构造函数中,为CleverTabs的prototype添加了resizePanelContainer函数,tabs自已不知道发生了resize事件,但总归有人知道发生了,谁知道谁调用,所谓的能者多劳?
CleverTabs.resizePanelContainer方法:
当使用CleverTabs默认的PanelContainer时,重新设置PanelContainer的size。
<script type="text/javascript"> 
var tabs; 
$(function () { 
tabs = $('#tabs').cleverTabs(); 
$(window).bind('resize', function () { 
//当发生window.resize事件时,重新默认的tabs的PanelContainer的大小 
tabs.resizePanelContainer(); 
}); 
</script>

演示 http://demo.3water.com/js/2011/CleverTabs/index.htm
源码下载  /201106/yuanma/CleverTabs.rar
Javascript 相关文章推荐
用js读、写、删除Cookie代码续篇
Dec 03 Javascript
js+css实现文字散开重组动画特效代码分享
Aug 21 Javascript
浅谈sass在vue注意的地方
Aug 10 Javascript
Node.JS使用Sequelize操作MySQL的示例代码
Oct 09 Javascript
JS中的多态实例详解
Oct 15 Javascript
Angularjs过滤器实现动态搜索与排序功能示例
Dec 13 Javascript
jQuery简单判断值是否存在于数组中的方法示例
Apr 17 jQuery
Vue下路由History模式打包后页面空白的解决方法
Jun 29 Javascript
vue+axios实现文件下载及vue中使用axios的实例
Sep 21 Javascript
Vue组件的使用及个人理解与介绍
Feb 09 Javascript
详解Webpack抽离第三方类库以及common解决方案
Mar 30 Javascript
Vue+element+cookie记住密码功能的简单实现方法
Sep 20 Javascript
自定义一个jquery插件[鼠标悬浮时候 出现说明label]
Jun 27 #Javascript
读jQuery之十 事件模块概述
Jun 27 #Javascript
AeroWindow 基于JQuery的弹出窗口插件
Jun 27 #Javascript
jQuery表格行换色的三种实现方法
Jun 27 #Javascript
19个很有用的 JavaScript库推荐
Jun 27 #Javascript
Node.js:Windows7下搭建的Node.js服务(来玩玩服务器端的javascript吧,这可不是前端js插件)
Jun 27 #Javascript
Jsonp 跨域的原理以及Jquery的解决方案
Jun 27 #Javascript
You might like
php设计模式 Adapter(适配器模式)
2011/06/26 PHP
PHP仿盗链代码
2012/06/03 PHP
解析phpstorm + xdebug 远程断点调试
2013/06/20 PHP
php实现的替换敏感字符串类实例
2014/09/22 PHP
PHP基于DOMDocument解析和生成xml的方法分析
2017/07/17 PHP
jquery.post用法关于type设置问题补充
2014/01/03 Javascript
JS方法调用括号的问题探讨
2014/01/24 Javascript
jquery实现select选中行、列合计示例
2014/04/25 Javascript
jquery之别踩白块游戏的简单实现
2016/07/25 Javascript
使用JavaScript解决网页图片拉伸问题(推荐)
2016/11/25 Javascript
用原生js做单页应用
2017/01/17 Javascript
jQuery操作之效果详解
2017/05/19 jQuery
layui结合form,table的全选、反选v1.0示例讲解
2018/08/15 Javascript
vue中eslintrc.js配置最详细介绍
2018/12/21 Javascript
Electron整合React使用搭建开发环境的步骤详解
2020/06/07 Javascript
详细介绍Python语言中的按位运算符
2013/11/26 Python
python读取浮点数和读取文本文件示例
2014/05/06 Python
python使用pil生成图片验证码的方法
2015/05/08 Python
Python基于socket实现简单的即时通讯功能示例
2018/01/16 Python
tensorflow获取变量维度信息
2018/03/10 Python
python写程序统计词频的方法
2019/07/29 Python
使用python写一个自动浏览文章的脚本实例
2019/12/05 Python
使用Bazel编译TensorBoard教程
2020/02/15 Python
Python预测2020高考分数和录取情况
2020/07/08 Python
Python 实现微信自动回复的方法
2020/09/11 Python
英国领先的鞋类零售商:Shoe Zone
2018/12/13 全球购物
Book Depository澳大利亚:世界领先的专业在线书店之一
2018/12/27 全球购物
合作意向书模板
2014/03/31 职场文书
反邪教宣传工作方案
2014/05/07 职场文书
社区党建工作汇报材料
2014/08/14 职场文书
2014村党支部书记党建工作汇报材料
2014/11/02 职场文书
教学工作总结范文5篇
2019/08/19 职场文书
python析构函数用法及注意事项
2021/06/22 Python
Python内置数据类型中的集合详解
2022/03/18 Python
Python 数据可视化工具 Pyecharts 安装及应用
2022/04/20 Python
SQL Server数据库的三种创建方法汇总
2023/05/08 MySQL