你可以这么做。 也许不是最优雅的,但那是有效的。 我希望它适合你:
首先准备有属性的表。
function prepare
{
var row=0;
$'tabletr'.each(function () ) ) ) ) ) ) ) )。
{
vartr=$(this;
var curCol=0;
varcaught=$(this ).data ) (caught );
$('td ',this ].each (function (索引) )。
{
wile(caughtcaught[curcol] ) )。
辅酶l;
varColspan=$(this ).attr ) Colspan )|| 1;
varRowspan=$(this ).attr ) Rowspan );
$(this ).attr )、curCol );
$(this ).attr )、curCol colspan - 1 );
$(this ).attr )、row );
$(this ).attr('Endrow ',row rowspan - 1 );
var next_tr=tr.next (;
for(varI=0; i rowspan - 1; I )
{
varcurcaught=next _ tr.data (' caught )|[];
for(varj=curcol; j curCol colspan; j )
curCaught[j]=true;
next_tr.data('caught ',curCaught );
next_tr=next_tr.next (;
}
curCol =colspan;
);
row;
() )
}
然后,可以调用此函数发送选定的tdies :
这是函数边界重构(TDS )
{
varmincol=TDS.min(function () return $ (this ).attr ) ' start ' ); );
varmaxcol=TDS.max(function () return $ (this ).attr ) ' end ' ); );
varminrow=TDS.min(function () return$ ) this ).attr('startrow ' ); );
varmaxrow=TDS.max(function () return $ (this ).attr ) ' endrow ' ); );
varrec=$(TD ).filter (function ) ) ) )。
{
varstartrow=$(this ).attr ) startrow );
varstartcol=$(this ).attr ) (start );
varendrow=$(this ).attr ) (endrow );
varendcol=$(this ).attr ) ) end );
返回(startrow=minrowstartrow=maxrowstartcol=mincolstartcol=maxcol ) |
(endrow=minrowendrow=maxrowendcol=mincolendcol=maxcol )
);
if(rec.length==TDS.length ) )。
{
调试程序
var first=rec.filter ([ start=' mincol ' ] [ startrow=' min row ' ] )
rec.not(first ).remove );
first.attr('Colspan ',maxCol - minCol 1);
first.attr('Rowspan ',maxrow - minrow 1);
返回恢复;
}
elsereturngetboundingrectangle (rec;
}
还增加了以下实用功能:
$.fn.max=function(func ) )。
{
vararr=this.map(func ).toArray );
返回math.max.apply (math,arr );
(;
$.fn.min=function(func ) )。
{
vararr=this.map(func ).toArray );
returnmath.min.apply(math,arr );
(;