如下代码...
做完后我发现... 还不如记录下新的顺序.然后把tabpanel里面的全部标签页移除,再按新的顺序一个个的加回来...
Ext.onReady(function(){
Ext.BLANK_IMAGE_URL = '/images/s.gif';
Ext.QuickTips.init();
testTabMove();
});
function testTabMove(){
var tab = new Ext.TabPanel({
activeTab:1,
items:[
{title:'xx1',html:'xxx1'},
{title:'xx2',html:'xxx2'},
{title:'xx3',html:'xxx3'},
{title:'xx4',html:'xxx4'},
{title:'xx5',html:'xxx5'}
],
/**
* 返回指定index对应的Panel
* @param {number} index
* @return {Panel}
*/
getTabByIndex:function(index){
return this.items.itemAt(index);
},
/**
* 返回指定index对应的标签页的Element对象
* @param {number} index
* @return {Ext.Element}
*/
getStripByIndex:function(index){
return Ext.get(this.getTabEl(this.getTabByIndex(index)));
},
/**
* 返回指定的panel在tabpanel里面的index
* @param {Ext.Panel} p
* @return {number}
*/
getTabIndex:function(p){
return this.items.indexOf(p);
},
/**
* 把某个Tab向左或向右移动
* @param {string/panel} tab 要移动的tab的panel对象或者它的index
* @param {number} dir 方向,负数为向左,正数为向右
*/
moveTab:function(tab,dir){
var srcIndex = Ext.isNumber(tab) ? tab : this.items.indexOf(tab);
var targetIndex = srcIndex + dir;
if(targetIndex>=0 && targetIndex<this.items.getCount()){
var targetTab = this.items.itemAt(targetIndex);
var targetStrip = Ext.get(this.getTabEl(targetTab));
var srcTab = this.items.itemAt(srcIndex);
var srcStrip = Ext.get(this.getTabEl(srcTab));
//互换item的位置
this.items.items[srcIndex] = targetTab;
this.items.items[targetIndex] = srcTab;
//互换Strip的位置
dir<0 ? srcStrip.insertBefore(targetStrip): srcStrip.insertAfter(targetStrip);
//清理
targetTab=null;
targetStrip=null;
srcTab=null;
srcStrip=null;
tab=null;
}
}
});
var f = new Ext.form.NumberField({value:'1',width:30});
var p = new Ext.Panel({
title:'::移动TabPanel测试::',
items:[tab],
renderTo:document.body,
height:300,
width:500,
tbar:[
'移动距离:',f,'-',{
text:'左移',
handler:function(){
tab.moveTab(tab.getActiveTab(),-1*parseInt(f.getValue()));
}
},{
text:'右移',
handler:function(){
tab.moveTab(tab.getActiveTab(),parseInt(f.getValue()));
}
}
]
})
}
给个截图,免得大漠又说我:

382

被折叠的 条评论
为什么被折叠?



