是否可以通过拖放重新排序 Kendo 个 Tabstrip 选项卡?

Is it possible to reorder Kendo Tabstrip tabs with drag and drop?

是否可以通过拖放重新排序选项卡(参见 Kendo 选项卡条基本模式 here)?类似于 Excel.

中的拖动选项卡

kendo forum 上有一个与此类似的已解决问题,它已经通过扩展 kendo tabstrip 小部件 和添加 kendo Reorderable 到里面。

var numTabs = 1, tabs = null;

var reorderableTabStrip = kendo.ui.TabStrip.extend({
    options: {
        name: 'ReorderableTabStrip'
    },

    init: function ( element, options ) {
        kendo.ui.TabStrip.fn.init.call(this, element, options);
        this.applyReorderable();
    },

    applyReorderable: function () {
        var reorderable = this.tabGroup.data('kendoReorderable');
        if ( reorderable ) {
          reorderable.destroy();
        }

        this.tabGroup.kendoReorderable({
            group: 'tabs',
            filter:'.k-item',
            hint: function(element) {
                return element.clone().wrap('<ul class="k-tabstrip-items k-reset"/>').parent().css({opacity: 0.8});
            },
            change: $.proxy(this.onReorderableChange, this)
        });
    },

    onReorderableChange: function ( event ) {
        if ( event.newIndex < event.oldIndex ) {
            this.tabGroup.children('.k-item:eq('+event.newIndex+')').before( this.tabGroup.children('.k-item:eq('+event.oldIndex+')') );
            this.element.children('.k-content:eq('+event.newIndex+')').before( this.element.children('.k-content:eq('+event.oldIndex+')') );
        }
        else {
            this.tabGroup.children('.k-item:eq('+event.newIndex+')').after( this.tabGroup.children('.k-item:eq('+event.oldIndex+')') );
            this.element.children('.k-content:eq('+event.newIndex+')').after( this.element.children('.k-content:eq('+event.oldIndex+')') );
        }
        this._updateClasses();
    }
});
kendo.ui.plugin( reorderableTabStrip );

tabs = $('#tabs').kendoReorderableTabStrip().data('kendoReorderableTabStrip');

$('#button').click( onButtonClick );

function onButtonClick () {
    numTabs++;
    tabs.append({
        text: 'Tab ' + numTabs,
        content: 'Tab ' + numTabs + ' Content'
    });
    tabs.applyReorderable();
}

我按照那里的答案修改了提问者的 jsfiddle,它工作正常。