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
});