Please extend a new method named 'move' to achieve this functionality.
<script>
$.extend($.fn.tabs.methods, {
move: function(jq, param){
return jq.each(function(){
var state = $.data(this, 'tabs');
var tabs = state.tabs;
var index = -1;
for(var i=0; i<tabs.length; i++){
if (tabs[i][0] == param.tab[0]){
index = i;
break;
}
}
if (index >= 0){
var p = tabs[index];
tabs.splice(index, 1);
tabs.splice(param.index>index?param.index-1:param.index, 0, p);
var tab = p.panel('options').tab;
var to = tab.parent().children('li').eq(param.index);
if (to.length){
tab.insertBefore(to);
} else {
tab.appendTo(tab.parent());
}
}
})
}
});
</script>
The code below shows how to move the selected tab to the first position.
var t = $('#tt');
var selected = t.tabs('getSelected');
t.tabs('move', {
tab: selected,
index: 0
});