mirror of
				https://github.com/dawidolko/Website-Templates.git
				synced 2025-10-30 16:03:11 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			56 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			56 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| /**
 | |
|  * 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;
 | |
| };
 |