学习基于jQuery的FlexiGrid工具 (二)

2014-11-24 01:40:17 · 作者: · 浏览: 13
sible div:eq(' + n + ')', this.hDiv).width();

$(obj).addClass('dragging').siblings().hide();

$(obj).prev().addClass('dragging').show();

this.colresize = {

startX: e.pageX,

ol: parseInt(obj.style.left),

ow: ow,

n: n

};

$('body').css('cursor', 'col-resize');

} else if (dragtype == 'vresize') {//table resize

var hgo = false;

$('body').css('cursor', 'row-resize');

if (obj) {

hgo = true;

$('body').css('cursor', 'col-resize');

}

this.vresize = {

h: p.height,

sy: e.pageY,

w: p.width,

sx: e.pageX,

hgo: hgo

};

} else if (dragtype == 'colMove') {//column header drag

$(g.nDiv).hide();

$(g.nBtn).hide();

this.hset = $(this.hDiv).offset();

this.hset.right = this.hset.left + $('table', this.hDiv).width();

this.hset.bottom = this.hset.top + $('table', this.hDiv).height();

this.dcol = obj;

this.dcoln = $('th', this.hDiv).index(obj);

this.colCopy = document.createElement("div");

this.colCopy.className = "colCopy";

this.colCopy.innerHTML = obj.innerHTML;

if ($.browser.msie) {

this.colCopy.className = "colCopy ie";

}

$(this.colCopy).css({

position: 'absolute',

float: 'left',

display: 'none',

textAlign: obj.align

});

$('body').append(this.colCopy);

$(this.cDrag).hide();

}

$('body').noSelect();

},

dragMove: function (e) {

if (this.colresize) {//column resize

var n = this.colresize.n;

var diff = e.pageX - this.colresize.startX;

var nleft = this.colresize.ol + diff;

var nw = this.colresize.ow + diff;

if (nw > p.minwidth) {

$('div:eq(' + n + ')', this.cDrag).css('left', nleft);

this.colresize.nw = nw;

}

} else if (this.vresize) {//table resize

var v = this.vresize;

var y = e.pageY;

var diff = y - v.sy;

if (!p.defwidth) p.defwidth = p.width;

if (p.width != 'auto' && !p.nohresize && v.hgo) {

var x = e.pageX;

var xdiff = x - v.sx;

var newW = v.w + xdiff;

if (newW > p.defwidth) {

this.gDiv.style.width = newW + 'px';

p.width = newW;

}

}

var newH = v.h + diff;

if ((newH > p.minheight || p.height < p.minheight) && !v.hgo) {

this.bDiv.style.height = newH + 'px';

p.height = newH;

this.fixHeight(newH);

}

v = null;

} else if (this.colCopy) {

$(this.dcol).addClass('thMove').removeClass('thOver');

if (e.pageX > this.hset.right || e.pageX < this.hset.left || e.pageY > this.hset.bottom || e.pageY < this.hset.top) {

//this.dragEnd();

$('body').css('cursor', 'move');

} else {

$('body').css('cursor', 'pointer');

}

$(this.colCopy).css({

top: e.pageY + 10,

left: e.pageX + 20,

display: 'block'

});

}

},

dragEnd: function () {

if (this.colresize) {

var n = this.colresize.n;

var nw = this.colresize.nw;

$('th:visible div:eq(' + n + ')', this.hDiv).css('width', nw);

$('tr', this.bDiv).each(

function () {

$('td:visible div:eq(' + n + ')', this).css('width', nw);

}

);

this.hDiv.scrollLeft = this.bDiv.scrollLeft;

$('div:eq(' + n + ')', this.cDrag).siblings().show();

$('.dragging', this.cDrag).removeClass('dragging');

this.rePosDrag();

this.fixHeight();

thi