作家
登录

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

作者: 来源:www.28hudong.com 2013-03-30 00:50:48 阅读 我要评论

作者: 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

  推荐阅读

  jquery异步请求实例代码

1、用ajax jsp代码如下: 复制代码 代码如下: $.ajax({ type:"get", dataType:"json", url:"<%=basePath%>actionSmUser.do?method=getUserMsgByUserId", data:"userId="+userId, success:function(msg){ var data >>>详细阅读


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

地址:http://www.17bianji.com/kaifa2/JS/24488.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)