jQuery Tab插件 用于在Tab中顯示iframe,附源碼和詳細(xì)說明
作者: think8848(公司主頁: http://www.cleversoft.com, QQ: 166156888, Blog: http://think8848.cnblogs.com) 轉(zhuǎn)載請保留此信息
CleverTabs是一款jQuery插件,所需jQuery版本:1.6.1,jQuery UI樣式版本:1.8.13;其功能為創(chuàng)建jQuery UI風(fēng)格的Tab用于顯示iframe。
本示例中符加了jQuery.contextMenu插件,我修改了其樣式,使用了jQuery UI的皮膚
效果如下圖:
初級應(yīng)用示例:
HTML代碼:
<div id="tabs"><ul></ul></div>
Javascript代碼:
<script type="text/javascript">
$(function () {
tabs = $('#tabs').cleverTabs();
tabs.add({
url: 'http://www.dbjr.com.cn',
label: 'think8848'
});
});
</script>
CleverTabs詳細(xì)說明:
CleverTabs為所有Tab的容器
var tabs;
<script type="text/javascript">
$(function () {
tabs = $('#tabs').cleverTabs({
//是否安裝右鍵菜單(默認(rèn): 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后是否鎖定(不允許關(guān)閉,默認(rèn): false)
lock: false,
//開啟Tab后是否禁用(不允許激活和操作iframe內(nèi)容,默認(rèn): false)
disable: false,
//當(dāng)tabs中只有一個Tab時,是否鎖定該Tab(默認(rèn): true)
lockOnlyOne: true,
//顯示iframe的容器(默認(rèn)創(chuàng)建在tabs元素中)
panelContainer: $('#panelContainerElementId')/*,
其中
tabHeaderTemplate: '', //(Tab用于控制的頭模板)
tabPanelTemplate: '', //(Tab用于顯示的Panel模板)
uidGenerator: function() {} //(Tab唯一id生成器)
功能現(xiàn)在不啟用,等有時間完善后再啟用*/
});
tabs.add({
url: 'http://www.dbjr.com.cn',
label: 'think8848'
});
});
</script>
CleverTabs.add方法:添加一個新的Tab并使之成為激活狀態(tài),如果將要添加的url已經(jīng)存在,則會激活該Tab
<script type="text/javascript">
var tabs = ('#tabs').cleverTabs();
tabs.add({
//必須是在tabs內(nèi)唯一的id
id: 'uniqueId',
//將要在iframe的src屬性設(shè)置的值
url: 'iframe.src',
//顯示在Tab頭上的文字
label: 'tab header',
//關(guān)閉本Tab時需要刷新的Tab的url(默認(rèn): null)
closeREfresh: 'tab url',
//關(guān)閉本Tab時需要激活的Tab的url(默認(rèn): null)
closeActivate: 'tab url',
//關(guān)閉本Tab時需要執(zhí)行的回調(diào)函數(shù)
callback: function () { /*do something*/ }
});
</script>
CleverTabs.getCurrentTab方法:
獲取當(dāng)前處于激活狀態(tài)的Tab
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.dbjr.com.cn');
</script>
CleverTabs.clear方法:
關(guān)閉tabs內(nèi)所有未鎖定的Tab
var tabs = ('#tabs').cleverTabs();
var tab = tabs.clear();
</script>
CleverTab.deactivate方法:
使Tab頁面處于未激活狀態(tài),但不建議在代碼中使用
CleverTab.prevTab方法:
獲取該Tab之前的Tab
var tabs = ('#tabs').cleverTabs();
var tab = tabs.getTabByUrl('http://www.dbjr.com.cn');
var prevTab = tab.prevTab();
</script>
CleverTab.nextTab方法:
獲取該Tab之后的Tab
var tabs = ('#tabs').cleverTabs();
var tab = tabs.getTabByUrl('http://www.dbjr.com.cn');
var prevTab = tab.nextTab();
</script>
CleverTab.kill方法:
從tabs中移移該Tab
var tabs = ('#tabs').cleverTabs();
var tab = tabs.getTabByUrl('http://www.dbjr.com.cn');
tab.kill();
</script>
CleverTab.refresh方法:
刷新該Tab的iframe中的內(nèi)容
var tabs = ('#tabs').cleverTabs();
var tab = tabs.getTabByUrl('http://www.dbjr.com.cn');
tab.refresh();
</script>
CleverTab.setDisable方法:
設(shè)置該Tab的disabled屬性,設(shè)置disabled為true后,自動設(shè)置該Tab的locked屬性為true
var tabs = ('#tabs').cleverTabs();
var tab = tabs.getTabByUrl('http://www.dbjr.com.cn');
//參數(shù)true為禁用,false或不提供值為啟用
tab.setDisable(true);
</script>
CleverTab.setLock方法:
設(shè)置該Tab的locked屬性,設(shè)置locked為true后,該Tab的不允許關(guān)閉
var tabs = ('#tabs').cleverTabs();
var tab = tabs.getTabByUrl('http://www.dbjr.com.cn');
//參數(shù)true為鎖定,false或不提供值為解鎖
tab.setLock(true);
</script>
------------------------------2011.06.27 更新---------------------------------
"改變不了別人,就改變自已吧"
在現(xiàn)在的頁面中,多數(shù)情況下都可能由幾部分組成,比如:Banner,Navigator,Content等,而為了工作區(qū)域變的更大,很多時候諸如Banner,Navigator或者其他的Panel都會收起來(Collapse),這個時候問題來了,當(dāng)初我給tabs定義了width: 80%; height: 90%; 現(xiàn)在tabs的width和height發(fā)生了變化,可是內(nèi)部的Tab頁面還沒有收到這個變化,它還是按照之前的size顯示呢,更要命的是resize事件居然只有window和body才有,div居然不支持此事件!真不知道他們是怎么想的...在之前的cleverTabs中,我綁定了window.resize事件,但是問題在于我上面舉的例子中,window的size實際上沒有發(fā)生變化,甚至body也沒有,但是tabs的大小發(fā)生變化了,在這種情況下,如果您使用了默認(rèn)的tabPenelContainer,那一定得處理tabs的resize事件,可是tabs就是一個div嘛,哪來的resize?昨晚在睡前突然想到個辦法,既然能"改變不了別人,就改變自已",那么就能"自已處理不了的事,就交給別人去處理吧"。把resize“外包”出去算了。于是對原來的代碼做了修改,在CleverTabs構(gòu)造函數(shù)中,為CleverTabs的prototype添加了resizePanelContainer函數(shù),tabs自已不知道發(fā)生了resize事件,但總歸有人知道發(fā)生了,誰知道誰調(diào)用,所謂的能者多勞?
CleverTabs.resizePanelContainer方法:
當(dāng)使用CleverTabs默認(rèn)的PanelContainer時,重新設(shè)置PanelContainer的size。
<script type="text/javascript">
var tabs;
$(function () {
tabs = $('#tabs').cleverTabs();
$(window).bind('resize', function () {
//當(dāng)發(fā)生window.resize事件時,重新默認(rèn)的tabs的PanelContainer的大小
tabs.resizePanelContainer();
});
</script>
演示 http://demo.jb51.net/js/2011/CleverTabs/index.htm
源碼下載 /201106/yuanma/CleverTabs.rar
相關(guān)文章
Jquery post傳遞數(shù)組方法實現(xiàn)思路及代碼
Jquery post 傳遞數(shù)組以做批量刪除會需要傳遞要刪除的數(shù)據(jù)ID數(shù)組,下面是具體的實現(xiàn)代碼,感興趣的童鞋們可以參考下2013-04-04淺談jQuery this和$(this)的區(qū)別及獲取$(this)子元素對象的方法
下面小編就為大家?guī)硪黄獪\談jQuery this和$(this)的區(qū)別及獲取$(this)子元素對象的方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-11-11使用element-ui的el-menu導(dǎo)航選中后刷新頁面保持當(dāng)前選中狀態(tài)
這篇文章主要介紹了使用element-ui的el-menu導(dǎo)航選中后刷新頁面保持當(dāng)前選中狀態(tài),本文通過實例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下2019-07-07jquery獲取easyui日期控件的值實現(xiàn)方法
下面小編就為大家?guī)硪黄猨query獲取easyui日期控件的值實現(xiàn)方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-11-11jQuery插件FusionWidgets實現(xiàn)的Cylinder圖效果示例【附demo源碼】
這篇文章主要介紹了jQuery插件FusionWidgets實現(xiàn)的Cylinder圖效果,結(jié)合實例形式分析了jQuery使用FusionWidgets結(jié)合swf文件讀取xml數(shù)據(jù)并采用Cylinder圖展示的相關(guān)實現(xiàn)技巧,并附帶demo源碼供讀者下載參考,需要的朋友可以參考下2017-03-03