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

作者: 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的皮肤

效果如下图:


初级应用示例:
HTML代码:
<div id="tabs"><ul></ul></div>
Javascript代码:


代码如下:

<script type="text/javascript">
$(function () {
tabs = $('#tabs').cleverTabs();
tabs.add({
url: 'http://www.jb51.net',
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: 'http://www.jb51.net',
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('http://www.jb51.net');
</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('http://www.jb51.net');
var prevTab = tab.prevTab();
</script>

CleverTab.nextTab方法:
获取该Tab之后的Tab


代码如下:

<script type="text/javascript">
var tabs = ('#tabs').cleverTabs();
var tab = tabs.getTabByUrl('http://www.jb51.net');
var prevTab = tab.nextTab();
</script>

CleverTab.kill方法:
从tabs中移移该Tab


代码如下:

<script type="text/javascript">
var tabs = ('#tabs').cleverTabs();
var tab = tabs.getTabByUrl('http://www.jb51.net');
tab.kill();
</script>

CleverTab.refresh方法:
刷新该Tab的iframe中的内容


代码如下:

<script type="text/javascript">
var tabs = ('#tabs').cleverTabs();
var tab = tabs.getTabByUrl('http://www.jb51.net');
tab.refresh();
</script>

CleverTab.setDisable方法:
设置该Tab的disabled属性,设置disabled为true后,自动设置该Tab的locked属性为true


代码如下:

<script type="text/javascript">
var tabs = ('#tabs').cleverTabs();
var tab = tabs.getTabByUrl('http://www.jb51.net');
//参数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('http://www.jb51.net');
//参数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.jb51.net/js/2011/CleverTabs/index.htm
源码下载  /201106/yuanma/CleverTabs.rar

(0)

相关推荐

  • jquery、js调用iframe父窗口与子窗口元素的方法整理

    1. jquery 在iframe子页面获取父页面元素代码如下: $("#objid", parent.document) 2. jquery在父页面 获取iframe子页面的元素 代码如下: $("#objid",document.frames('iframename').document) 3.js 在iframe子页面获取父页面元素代码如下: indow.parent.document.getElementByIdx_x("元素id");

  • jQuery操作iframe中js函数的方法小结

    本文实例讲述了jQuery操作iframe中js函数的方法.分享给大家供大家参考,具体如下: 1.jquery操作iframe中的元素(2种方式) var tha = $(window.frames["core_content"].document).find("#trewuuu").html(); var thb = $("#core_content").contents().find("#trewuuu").html();

  • jquery 操作iframe的几种方法总结

    iframe在复合文档中经常用到,利用jquery操作iframe可以大幅提高效率,这里收集一些基本操作 DOM方法:父窗口操作IFRAME:window.frames["iframeSon"].documentIFRAME操作父窗口: window.parent.document jquery方法:在父窗口中操作 选中IFRAME中的所有输入框: $(window.frames["iframeSon"].document).find(":text&quo

  • 解析Jquery取得iframe中元素的几种方法

    DOM方法:父窗口操作IFRAME:window.frames["iframeSon"].documentIFRAME操作父窗口: window.parent.documentjquery方法:在父窗口中操作 选中IFRAME中的所有输入框: $(window.frames["iframeSon"].document).find(":text");在IFRAME中操作 选中父窗口中的所有输入框:$(window.parent.document).

  • Jquery中获取iframe的代码

    父窗口中操作iframe:window.frames["iframeChild"].document //假如iframe的id为iframeChild 在子窗口中操作父窗口:window.parent.document 那么,用如果想用jquery的方法,我们怎么用jquery来获取iframe呢?下面是一下收集来的方法. 获取页面的对象其实就是dom方法外面加上jquery的选择符: 父窗口中操作iframe:$(window.frames["iframeChild&qu

  • JQUERY设置IFRAME的SRC值的代码

    复制代码 代码如下: $(window.parent.document).find("#Frm_Main").attr("src",url); 使用jquery操作iframe 1 内容里有两个ifame <iframe id="leftiframe"...</iframe> <iframe id="mainiframe..</iframe> leftiframe中jQuery改变mainiframe

  • jQuery解决iframe高度自适应代码

    复制代码 代码如下: <script type="text/javascript"> <!-- $(     function()     {                          //iframe高度随内容自动调整         $('.main').load(          function()             {                 $(this).height($(this).contents().find("b

  • JQuery跨Iframe选择实现代码

    从父页面中选择iframe中的元素: 复制代码 代码如下: $('#btnCancel',$('#PopFrame')[0].contentWindow.document) 从iframe页面中选择父页面中的元素: 复制代码 代码如下: $("#PopContainer",parent.document) 以下内容是别的网友的解决方法:只好用DOM方法与jquery方法结合的方式实现了 1.在父窗口中操作 选中IFRAME中的所有单选钮 $(window.frames["if

  • jquery获取iframe中的dom对象(两种方法)

    父窗口中操作iframe:$(window.frames["iframeChild"].document) //假如iframe的id为iframeChild 在子窗口中操作父窗口:$(window.parent.document) 接下来就可以继续获取iframe内的dom了. 获取iframe内的dom对象有两种方法 1 $(window.frames["iframeChild"].document).find("#child") 2 $(&

  • JQuery判断子iframe何时加载完成解决方案

    项目中遇到场景:一个按钮要在子iframe加载完成之后才能被点击,这是就需要知道iframe何时加载完成,用JQuery很简单就能实现,代码如下: 复制代码 代码如下: var isOnLoad = true; youIFrame.attr("src", url); youIFrame.load(function() { isOnLoad = false;// 加载完成 alert('load success'); }); 已验证通过!

随机推荐