You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

47 lines
1.7 KiB

(function($) {
$.fn.resizableColumns = function() {
var isColResizing = false;
var resizingPosX = 0;
var _table = $(this);
var _thead = $(this).find('thead');
_thead.find('th').each(function() {
$(this).css('position', 'relative');
if ($(this).is(':not(:last-child)')) $(this).append("<div class='resizer' style='position:absolute;top:0px;right:-3px;bottom:0px;width:6px;z-index:999;background:transparent;cursor:col-resize'></div>");
})
$(document).mouseup(function(e) {
_thead.find('th').removeClass('resizing');
isColResizing = false;
e.stopPropagation();
})
_table.find('.resizer').mousedown(function(e) {
_thead.find('th').removeClass('resizing');
$(_thead).find('tr:first-child th:nth-child(' + ($(this).closest('th').index() + 1) + ') .resizer').closest('th').addClass('resizing');
resizingPosX = e.pageX;
isColResizing = true;
e.stopPropagation();
})
_table.mousemove(function(e) {
if (isColResizing) {
var _resizing = _thead.find('th.resizing .resizer');
if (_resizing.length == 1) {
var _nextRow = _thead.find('th.resizing + th');
var _pageX = e.pageX || 0;
var _widthDiff = _pageX - resizingPosX;
var _setWidth = _resizing.closest('th').innerWidth() + _widthDiff;
var _nextRowWidth = _nextRow.innerWidth() - _widthDiff;
if (resizingPosX != 0 && _widthDiff != 0 && _setWidth > 50 && _nextRowWidth > 50) {
_resizing.closest('th').innerWidth(_setWidth);
resizingPosX = e.pageX;
_nextRow.innerWidth(_nextRowWidth);
}
}
}
})
};
}
(jQuery));