Blame | Letzte Änderung | Log anzeigen | RSS feed
/*** Due to the fact that DataTables moves DOM elements around (mainly `dt-tag tr`* elements for sorting and filtering) it can at times be a little tricky to get* the next row based on another, while taking into account pagination,* filtering, sorting etc.** This function is designed to address exactly this situation. It takes two* parameters, the target node, and a boolean indicating if the adjacent row* retrieved should be the next (`true`, or no value) or the previous (`false`).** @name fnGetAdjacentTr* @summary Get the adjacent `dt-tag tr` element for a row.* @author [Allan Jardine](http://sprymedia.co.uk)** @param {node} nTr `dt-tag tr` element to get the adjacent element of* @param {boolean} [bNext=true] Get the next (`true`), or previous (`false`)* `dt-tag tr` element.* @returns {node} `dt-tag tr` element or null if not found.** @example* $(document).ready(function() {* var table = $('#example').dataTable();** var n1 = $('#example tbody tr').eq(2)[0];* var next = table.fnGetAdjacentTr( n1 );* var prev = table.fnGetAdjacentTr( n1, false );* } );*/jQuery.fn.dataTableExt.oApi.fnGetAdjacentTr = function ( oSettings, nTr, bNext ){/* Find the node's position in the aoData store */var iCurrent = oSettings.oApi._fnNodeToDataIndex( oSettings, nTr );/* Convert that to a position in the display array */var iDisplayIndex = $.inArray( iCurrent, oSettings.aiDisplay );if ( iDisplayIndex == -1 ){/* Not in the current display */return null;}/* Move along the display array as needed */iDisplayIndex += (typeof bNext=='undefined' || bNext) ? 1 : -1;/* Check that it within bounds */if ( iDisplayIndex < 0 || iDisplayIndex >= oSettings.aiDisplay.length ){/* There is no next/previous element */return null;}/* Return the target node from the aoData store */return oSettings.aoData[ oSettings.aiDisplay[ iDisplayIndex ] ].nTr;};