Skip to content

Tabs(选项卡)

使用$.fn.iTabs.defaults重写默认值对象。

选项卡显示一批面板。但在同一个时间只会显示一个面板。每个选项卡面板都有头标题和一些小的按钮工具菜单,包括关闭按钮和其他自定义按钮。

依赖关系

用法

创建面板

1. 通过标签创建选项卡

通过标签可以更容易的创建选项卡,我们不需要写任何Javascript代码。只需要给<div/>标签添加一个data-toggle="topjui-tabs"。每个选项卡面板都通过子<div/>标签进行创建,用法和panel(面板)相同。

html
<div id="tt" data-toggle="topjui-tabs" style="width:500px;height:250px;">
  <div title="Tab1" style="padding:20px;display:none;">
    tab1
  </div>
  <div title="Tab2" data-options="closable:true" style="overflow:auto;padding:20px;display:none;">
    tab2
  </div>
  <div title="Tab3" data-options="iconCls:'icon-reload',closable:true" style="padding:20px;display:none;">
    tab3
  </div>
</div>

2. 通过Javascript创建选项卡

下面的代码演示如何使用Javascript创建选项卡,当该选项卡被选择时将会触发'onSelect'事件。

javascript
$('#tt').iTabs({
  border:false,
  onSelect:function(title){
    alert(title+' is selected');
  }
});

添加新的选项卡面板

添加一个新的包含小工具菜单的选项卡面板,小工具菜单图标(8x8)被放置在关闭按钮之前。

javascript
// add a new tab panel
$('#tt').iTabs('add',{
  title: 'New Tab',
  content: 'Tab Body',
  closable:true,
  tools:[{
    iconCls:'icon-mini-refresh',
    handler:function(){
      alert('refresh');
    }
  }]
});

获取选择的选项卡

javascript
// get the selected tab panel and its tab object
var pp = $('#tt').iTabs('getSelected');
var tab = pp.iPanel('options').tab;    // the corresponding tab object

属性

属性名属性值类型描述默认值
widthnumber选项卡容器宽度。auto
heightnumber选项卡容器高度。auto
plainboolean设置为true时,将不显示控制面板背景。false
fitboolean设置为true时,选项卡的大小将铺满它所在的容器。false
borderboolean设置为true时,显示选项卡容器边框。true
scrollIncrementnumber选项卡滚动条每次滚动的像素值。100
scrollDurationnumber每次滚动动画持续的时间,单位:毫秒。400
toolsarray,selector工具栏添加在选项卡面板头的左侧或右侧。可用的值有:
1. 一个工具菜单数组,每个工具选项都和linkbutton相同。
2. 一个指向<div/>容器工具菜单的选择器。
见下方代码示例。
null
toolPositionstring工具栏位置。可用值:'left','right'。right
tabPositionstring选项卡位置。可用值:'top','bottom','left','right'。top
headerWidthnumber选项卡标题宽度,在tabPosition属性设置为'left'或'right'的时候才有效。150
tabWidthnumber标签条的宽度。auto
tabHeightnumber标签条的高度。27
selectednumber初始化选中一个标签页。0
showHeaderboolean设置为true时,显示标签页标题。true
justifiedboolean设置为true时,生成等宽标题选项卡。false
narrowboolean设置为true时,删除选项卡标题之间的空间。false
pillboolean设置为true时,选项卡标题样式改为气泡状。false

属性代码示例

tools属性示例:

通过数组定义工具菜单:

javascript
$('#tt').iTabs({
  tools:[{
    iconCls:'icon-add',
    handler:function(){
      alert('添加')
    }
  },{
    iconCls:'icon-save',
    handler:function(){
      alert('保存')
    }
  }]
});

通过存在的DOM容器定义工具菜单:

javascript
$('#tt').iTabs({
  tools:'#tab-tools'
});
html
<div id="tab-tools">
  <a href="#" data-toggle="topjui-linkbutton" plain="true" iconcls="icon-add"></a>
  <a href="#" data-toggle="topjui-linkbutton" plain="true" iconcls="icon-save"></a>
</div>

事件

事件名事件参数描述
onLoadpanel在ajax选项卡面板加载完远程数据的时候触发。
onSelecttitle,index用户在选择一个选项卡面板的时候触发。
onUnselecttitle,index用户在取消选择一个选项卡面板的时候触发。
onBeforeClosetitle,index在选项卡面板关闭的时候触发,返回false取消关闭操作。见下方代码示例。
onClosetitle,index在用户关闭一个选项卡面板的时候触发。
onAddtitle,index在添加一个新选项卡面板的时候触发。
onUpdatetitle,index在更新一个选项卡面板的时候触发。
onContextMenue,title,index在右键点击一个选项卡面板的时候触发。

事件代码示例

onBeforeClose事件示例:

下面的例子展示了在关闭选项卡面板之前以何种方式显示确认对话框:

javascript
$('#tt').iTabs({
  onBeforeClose: function(title){
    return confirm('您确认想要关闭 ' + title);
  }
});

// 使用异步确认对话框
$('#tt').iTabs({
  onBeforeClose: function(title,index){
    var target = this;
    $.iMessager.confirm('确认','你确认想要关闭'+title,function(r){
      if (r){
        var opts = $(target).iTabs('options');
        var bc = opts.onBeforeClose;
        opts.onBeforeClose = function(){};  // 允许现在关闭
        $(target).iTabs('close',index);
        opts.onBeforeClose = bc;  // 还原事件函数
      }
    });
    return false;   // 阻止关闭
  }
});

方法

方法名方法参数描述
optionsnone返回选项卡属性。
tabsnone返回所有选项卡面板。
resizenone调整选项卡容器大小和布局。
addoptions添加一个新选项卡面板,选项参数是一个配置对象,查看选项卡面板属性的更多细节。在添加一个新选项卡面板的时候它将变成可选的。
添加一个非选中状态的选项卡面板时,记得设置'selected'属性为false。
见下方代码示例。
closewhich关闭一个选项卡面板,'which'参数可以是选项卡面板的标题或者索引,以指定要关闭的面板。
getTabwhich获取指定选项卡面板,'which'参数可以是选项卡面板的标题或者索引。
getTabIndextab获取指定选项卡面板的索引。
getSelectednone获取选择的选项卡面板。见下方代码示例。
selectwhich选择一个选项卡面板,'which'参数可以是选项卡面板的标题或者索引。
unselectwhich取消选择一个选项卡面板,'which'参数可以是选项卡面板的标题或者索引。
showHeadernone显示选项卡的标签头。
hideHeadernone隐藏选项卡的标签头。
showToolnone显示工具栏。
hideToolnone隐藏工具栏。
existswhich表明指定的面板是否存在,'which'参数可以是选项卡面板的标题或索引。
updateparam更新指定的选项卡面板,'param'参数包含2个属性:
tab:要更新的选项卡面板。
type:更新类型,可用值有:'header', 'body', 'all'。
options:面板的属性。
见下方代码示例。
enableTabwhich启用指定的选项卡面板,'which'参数可以是选项卡面板的标题或索引。见下方代码示例。
disableTabwhich禁用指定的选项卡面板,'which'参数可以是选项卡面板的标题或索引。见下方代码示例。
scrollBydeltaX滚动选项卡标题指定的像素数量,负值则向右滚动,正值则向左滚动。见下方代码示例。

方法代码示例

add方法示例:

javascript
// 添加一个未选中状态的选项卡面板
$('#tt').iTabs('add',{
  title: '新选项卡面板',
  selected: false
  //...
});

// 在索引为2的位置上插入一个选项卡面板
$('#tt').iTabs('add',{
  title: '插入的选项卡面板',
  index: 2
});

getSelected方法示例:

下面的例子展示了如何获取选择的选项卡面板索引:

javascript
var tab = $('#tt').iTabs('getSelected');
var index = $('#tt').iTabs('getTabIndex',tab);
alert(index);

update方法示例:

javascript
// 更新选择的面板的新标题和内容
var tab = $('#tt').iTabs('getSelected');  // 获取选择的面板
$('#tt').iTabs('update', {
  tab: tab,
  options: {
    title: '新标题',
    href: 'get_content.php'  // 新内容的URL
  }
});

// 调用 'refresh' 方法更新选项卡面板的内容
var tab = $('#tt').iTabs('getSelected');  // 获取选择的面板
tab.iPanel('refresh', 'get_content.php');

enableTab方法示例:

javascript
$('#tt').iTabs('enableTab', 1);            // 启用第二个选项卡面板
$('#tt').iTabs('enableTab', 'Tab2');     // 启用标题为Tab2的选项卡面板

disableTab方法示例:

javascript
$('#tt').iTabs('disableTab', 1); // 禁用第二个选项卡面板

scrollBy方法示例:

javascript
// 滚动选项卡标题到左边
$('#tt').iTabs('scrollBy', 10);

选项卡面板

选项卡面板属性与panel组件属性的定义类似,下面是2个组件的一些公共属性。

属性名属性值类型描述默认值
idstring选项卡面板的ID属性。null
titlestring选项卡面板的标题文本。
contentstring选项卡面板的内容。
hrefstring从URL加载远程数据内容填充到选项卡面板。null
cacheboolean如果为true,在'href'属性设置了有效值的时候缓存选项卡面板。true
iconClsstring定义了一个图标的CSS类ID显示到选项卡面板标题。null
widthnumber选项卡面板宽度。auto
heightnumber选项卡面板高度。auto
collapsibleboolean如果为true,则允许选项卡摺叠。false

下面的是选项卡面板新增且独有的属性。

属性名属性值类型描述默认值
closableboolean在设置为true的时候,选项卡面板将显示一个关闭按钮,在点击的时候会关闭选项卡面板。false
selectedboolean在设置为true的时候,选项卡面板会被选中。false
disabledboolean在设置为true的时候,选项卡面板会被禁用。false

基于最新稳定版jQuery EasyUI构建的前端框架