2013-10-11 11 views
5

colResizable wydaje się być świetną wtyczką do regulowanych szerokości kolumn.Szerokość kolumny z colResizable plugin

Niestety, usuwa pierwotnie ustawione szerokości. Używałem whitespace: nowrap, ponieważ mam małe kolumny i niektóre większe. Teraz z colResizable plugin wszystkie kolumny są dostosowane do tego samego rozmiaru.

Próbowałem obejść, czytając szerokość kolumn, zanim wtyczka skorzysta, a następnie je zresetując. Na początku wygląda dobrze, ale potem zdarzają się dziwne rzeczy. Chwyty pozostają oczywiście tam, gdzie były z kolumnami o tej samej wielkości.

var columnWidths = new Array(); 
// store original col widths in array 
$.each($("th", table), function() { 
    columnWidths.push($(this).width()); 
}); 

// Make cols resizable 
$(function() { 
    table.colResizable({ 
     liveDrag: true, 
     gripInnerHtml: "<div class='grip'></div>", 
     draggingClass: "dragging" 
    }); 
}); 

// reset columns to original width 
for (var i = 0; i < columnWidths.length; i++) { 
    $('th:nth-child(' + (i + 1) + ')', table).css({ width: columnWidths[i] + "px" }); 
} 

Czy ktoś może wymyślić lepsze rozwiązanie?

Odpowiedz

6

Po przeanalizowaniu źródła z github, znalazłem lepszy sposób.

Układ tabeli zmienia się najpierw, gdy do tabeli zostanie przypisana klasa SIGNATURE, która obejmuje Tuż przed tym, popycham oryginalne szerokości kolumn do nowej tablicy. Ta tablica jest przekazywana do funkcji createGrips.

/* init function */ 
// ... 

var originalColumnWidths = new Array(); 
$.each($('th', t), function() { 
    originalColumnWidths.push($(this).width()); 
}); 

// t.addClass(SIGNATURE) ... 

createGrips(t, originalColumnWidths); 

Gdy przelotowego kolumn w funkcji createGrips, ja przypisanie wartości z tablicy do nowej kolumny owinięte jQuery obiekt zamiast bieżącej szerokości kolumny.

// Change the signature 
var createGrips = function (t, originalColumnWidths) { 
// ... 

// Replace that line 
c.w = c.width(); 
// with the following 
c.w = originalColumnWidths[i]; 

To działa doskonale. Mam nadzieję, że może komuś pomóc!

+0

Dałem szansę. Nie odniosłem żadnego sukcesu, myślę, że główna wtyczka została zaktualizowana od tego czasu. – foochow

+1

Zauważyłem też, że miałem problemy z Chrome (uchwyty nie są w kolejce). Ustawienie szerokości stołu na 0 (i po prostu zastosowanie indywidualnego rozmiaru kolumny) rozwiązało problem. – prograhammer

+0

To nadal działa w najnowszej wersji bez żadnych niepożądanych efektów ubocznych, które mogę znaleźć – DelightedD0D

Powiązane problemy