1
0
mirror of https://github.com/DataTables/DataTables.git synced 2025-03-15 16:29:16 +01:00

Fix: fnSetColumnVis didn't cope with TH elements in the body due to the use of a 'td' selector. The fix for this is to use _fnGetTdNodes() (since that can get an array of TD|TH nodes, which in turn allows a nice tidy up of the insert part of the function.

This commit is contained in:
Allan Jardine 2011-05-12 21:34:48 +01:00
parent f27c487862
commit 844bbaf4ee

View File

@ -2025,7 +2025,7 @@
var oSettings = _fnSettingsFromNode( this[_oExt.iApiIndex] ); var oSettings = _fnSettingsFromNode( this[_oExt.iApiIndex] );
var i, iLen; var i, iLen;
var iColumns = oSettings.aoColumns.length; var iColumns = oSettings.aoColumns.length;
var nTd, anTds, nCell, anTrs, jqChildren; var nTd, nCell, anTrs, jqChildren, bAppend;
/* No point in doing anything if we are requesting what is already true */ /* No point in doing anything if we are requesting what is already true */
if ( oSettings.aoColumns[iCol].bVisible == bShow ) if ( oSettings.aoColumns[iCol].bVisible == bShow )
@ -2046,38 +2046,22 @@
} }
/* Need to decide if we should use appendChild or insertBefore */ /* Need to decide if we should use appendChild or insertBefore */
if ( iInsert >= _fnVisbleColumns( oSettings ) ) bAppend = (iInsert >= _fnVisbleColumns( oSettings ));
for ( i=0, iLen=oSettings.aoData.length ; i<iLen ; i++ )
{ {
for ( i=0, iLen=oSettings.aoData.length ; i<iLen ; i++ ) if ( oSettings.aoData[i].nTr !== null )
{ {
if ( oSettings.aoData[i].nTr !== null ) if ( bAppend )
{ {
nTd = oSettings.aoData[i]._anHidden[iCol]; oSettings.aoData[i].nTr.appendChild(
oSettings.aoData[i].nTr.appendChild( nTd ); oSettings.aoData[i]._anHidden[iCol]
);
} }
} else
}
else
{
/* Which coloumn should we be inserting before? */
var iBefore;
for ( i=iCol ; i<iColumns ; i++ )
{
iBefore = _fnColumnIndexToVisible( oSettings, i );
if ( iBefore !== null )
{ {
break; oSettings.aoData[i].nTr.insertBefore(
} oSettings.aoData[i]._anHidden[iCol],
} _fnGetTdNodes( oSettings, i )[iCol+1] );
anTds = _fnGetTdNodes( oSettings );
for ( i=0, iLen=oSettings.aoData.length ; i<iLen ; i++ )
{
if ( oSettings.aoData[i].nTr !== null )
{
nTd = oSettings.aoData[i]._anHidden[iCol];
oSettings.aoData[i].nTr.insertBefore( nTd, $('>td:eq('+iBefore+')',
oSettings.aoData[i].nTr)[0] );
} }
} }
} }