Javascript 添加新行,然后单击行0时,Datatables.net fnGetPosition返回-1表示iColumnIndex
我通过以下方式获得我的职位:Javascript 添加新行,然后单击行0时,Datatables.net fnGetPosition返回-1表示iColumnIndex,javascript,jquery,jquery-datatables,Javascript,Jquery,Jquery Datatables,我通过以下方式获得我的职位: this.fnGetPosition = function( nNode ) { var oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] ); var sNodeName = nNode.nodeName.toUpperCase(); if ( sNodeName == "TR" ) { re
this.fnGetPosition = function( nNode )
{
var oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );
var sNodeName = nNode.nodeName.toUpperCase();
if ( sNodeName == "TR" )
{
return _fnNodeToDataIndex(oSettings, nNode);
}
else if ( sNodeName == "TD" || sNodeName == "TH" )
{
var iDataIndex = _fnNodeToDataIndex( oSettings, nNode.parentNode );
var iColumnIndex = _fnNodeToColumnIndex( oSettings, iDataIndex, nNode );
return [ iDataIndex, _fnColumnIndexToVisible(oSettings, iColumnIndex ), iColumnIndex ];
}
return null;
};
如果我点击第0行,iDataIndex包含0,iColumnIndex包含我点击的任何列。但是如果我添加一个新行,比如说第9行,然后我点击第0行,iDataIndex仍然保持9而不是0,iColumnIndex返回-1。在添加新行时,我必须关闭bServerSide,因为如果不关闭,单击addnewrow按钮将不会添加空行,而是进行ajax调用。添加行后,我会重新打开bServerSide
fnNodeToDataIndex如下所示:
function _fnNodeToDataIndex( oSettings, n )
{
return (n._DT_RowIndex!==undefined) ? n._DT_RowIndex : null;
}
function _fnNodeToColumnIndex( oSettings, iRow, n )
{
var anCells = _fnGetTdNodes( oSettings, iRow );
for ( var i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )
{
if ( anCells[i] === n )
{
return i;
}
}
return -1;
}
fnNodeToColumnIndex如下所示:
function _fnNodeToDataIndex( oSettings, n )
{
return (n._DT_RowIndex!==undefined) ? n._DT_RowIndex : null;
}
function _fnNodeToColumnIndex( oSettings, iRow, n )
{
var anCells = _fnGetTdNodes( oSettings, iRow );
for ( var i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )
{
if ( anCells[i] === n )
{
return i;
}
}
return -1;
}
}) 我想小提琴是不可能的?