คำตอบที่เลือกไว้ที่นี่เป็นคำตอบที่ดีมาก แต่มีข้อผิดพลาดร้ายแรงอย่างหนึ่งซึ่งปรากฏอยู่ในซอ fiddle JS ดั้งเดิม ( http://jsfiddle.net/bgrins/tzYbU/ ): ลองลากแถวที่ยาวที่สุด ( God Bless You, Mr Rosewater ) และส่วนที่เหลือของความกว้างของเซลล์จะยุบ
ซึ่งหมายความว่าการแก้ไขความกว้างของเซลล์ในเซลล์ที่ลากไม่เพียงพอ - คุณต้องแก้ไขความกว้างของตาราง
$(function () {
    $('td, th', '#sortFixed').each(function () {
        var cell = $(this);
        cell.width(cell.width());
    });
    $('#sortFixed tbody').sortable().disableSelection();
});
JS Fiddle: http://jsfiddle.net/rp4fV/3/
วิธีนี้จะช่วยแก้ไขปัญหาการยุบตารางหลังจากที่คุณลากคอลัมน์แรก แต่แนะนำคอลัมน์ใหม่: หากคุณเปลี่ยนเนื้อหาของตารางขนาดเซลล์จะถูกแก้ไขในขณะนี้
หากต้องการแก้ไขสิ่งนี้เมื่อเพิ่มหรือเปลี่ยนแปลงเนื้อหาคุณจะต้องล้างชุดความกว้าง:
$('td, th', '#sortFixed').each(function () {
    var cell = $(this);
    cell.css('width','');
});
จากนั้นเพิ่มเนื้อหาของคุณแล้วแก้ไขความกว้างอีกครั้ง
นี่ยังไม่เป็นโซลูชันที่สมบูรณ์เนื่องจาก (โดยเฉพาะกับตาราง) คุณจำเป็นต้องมีตัวยึดตำแหน่งแบบหล่น เพื่อที่เราจะต้องเพิ่มฟังก์ชั่นในการเริ่มต้นที่สร้างตัวยึด:
$('#sortFixed tbody').sortable({
    items: '> tr',
    forcePlaceholderSize: true,
    placeholder:'must-have-class',
    start: function (event, ui) {
        // Build a placeholder cell that spans all the cells in the row
        var cellCount = 0;
        $('td, th', ui.helper).each(function () {
            // For each TD or TH try and get it's colspan attribute, and add that or 1 to the total
            var colspan = 1;
            var colspanAttr = $(this).attr('colspan');
            if (colspanAttr > 1) {
                colspan = colspanAttr;
            }
            cellCount += colspan;
        });
        // Add the placeholder UI - note that this is the item's content, so TD rather than TR
        ui.placeholder.html('<td colspan="' + cellCount + '"> </td>');
    }
}).disableSelection();
JS Fiddle: http://jsfiddle.net/rp4fV/4/