DataTables presents a number of useful API functions to the calling code which can be used to manipulate the table data as required. But there are times when DataTables doesn't provide the API function that you want - so for this DataTables allows a method by which custom API functions can be defined (effectively a plug-in). This is done by adding functions the $.fn.dataTableExt.oApi object, which will be registered by DataTables. Each function is passed a single parameter, the settings object for the table in question.
In the example below, I present an API function which is used to obtain all of the TR rows which are currently not on display (useful for building a form from the table).
Rendering engine | Browser | Platform(s) | Engine version | CSS grade |
---|---|---|---|---|
Trident | Internet Explorer 4.0 | Win 95+ | 4 | X |
Trident | Internet Explorer 5.0 | Win 95+ | 5 | C |
Trident | Internet Explorer 5.5 | Win 95+ | 5.5 | A |
Trident | Internet Explorer 6 | Win 98+ | 6 | A |
Trident | Internet Explorer 7 | Win XP SP2+ | 7 | A |
Trident | AOL browser (AOL desktop) | Win XP | 6 | A |
Gecko | Firefox 1.0 | Win 98+ / OSX.2+ | 1.7 | A |
Gecko | Firefox 1.5 | Win 98+ / OSX.2+ | 1.8 | A |
Gecko | Firefox 2.0 | Win 98+ / OSX.2+ | 1.8 | A |
Gecko | Firefox 3.0 | Win 2k+ / OSX.3+ | 1.9 | A |
Gecko | Camino 1.0 | OSX.2+ | 1.8 | A |
Gecko | Camino 1.5 | OSX.3+ | 1.8 | A |
Gecko | Netscape 7.2 | Win 95+ / Mac OS 8.6-9.2 | 1.7 | A |
Gecko | Netscape Browser 8 | Win 98SE+ | 1.7 | A |
Gecko | Netscape Navigator 9 | Win 98+ / OSX.2+ | 1.8 | A |
Gecko | Mozilla 1.0 | Win 95+ / OSX.1+ | 1 | A |
Gecko | Mozilla 1.1 | Win 95+ / OSX.1+ | 1.1 | A |
Gecko | Mozilla 1.2 | Win 95+ / OSX.1+ | 1.2 | A |
Gecko | Mozilla 1.3 | Win 95+ / OSX.1+ | 1.3 | A |
Gecko | Mozilla 1.4 | Win 95+ / OSX.1+ | 1.4 | A |
Gecko | Mozilla 1.5 | Win 95+ / OSX.1+ | 1.5 | A |
Gecko | Mozilla 1.6 | Win 95+ / OSX.1+ | 1.6 | A |
Gecko | Mozilla 1.7 | Win 98+ / OSX.1+ | 1.7 | A |
Gecko | Mozilla 1.8 | Win 98+ / OSX.1+ | 1.8 | A |
Gecko | Seamonkey 1.1 | Win 98+ / OSX.2+ | 1.8 | A |
Gecko | Epiphany 2.20 | Gnome | 1.8 | A |
Webkit | Safari 1.2 | OSX.3 | 125.5 | A |
Webkit | Safari 1.3 | OSX.3 | 312.8 | A |
Webkit | Safari 2.0 | OSX.4+ | 419.3 | A |
Webkit | Safari 3.0 | OSX.4+ | 522.1 | A |
Webkit | OmniWeb 5.5 | OSX.4+ | 420 | A |
Webkit | iPod Touch / iPhone | iPod | 420.1 | A |
Webkit | S60 | S60 | 413 | A |
Presto | Opera 7.0 | Win 95+ / OSX.1+ | - | A |
Presto | Opera 7.5 | Win 95+ / OSX.2+ | - | A |
Presto | Opera 8.0 | Win 95+ / OSX.2+ | - | A |
Presto | Opera 8.5 | Win 95+ / OSX.2+ | - | A |
Presto | Opera 9.0 | Win 95+ / OSX.3+ | - | A |
Presto | Opera 9.2 | Win 88+ / OSX.3+ | - | A |
Presto | Opera 9.5 | Win 88+ / OSX.3+ | - | A |
Presto | Opera for Wii | Wii | - | A |
Presto | Nokia N800 | N800 | - | A |
Presto | Nintendo DS browser | Nintendo DS | 8.5 | C/A1 |
KHTML | Konqureror 3.1 | KDE 3.1 | 3.1 | C |
KHTML | Konqureror 3.3 | KDE 3.3 | 3.3 | A |
KHTML | Konqureror 3.5 | KDE 3.5 | 3.5 | A |
Tasman | Internet Explorer 4.5 | Mac OS 8-9 | - | X |
Tasman | Internet Explorer 5.1 | Mac OS 7.6-9 | 1 | C |
Tasman | Internet Explorer 5.2 | Mac OS 8-X | 1 | C |
Misc | NetFront 3.1 | Embedded devices | - | C |
Misc | NetFront 3.4 | Embedded devices | - | A |
Misc | Dillo 0.8 | Embedded devices | - | X |
Misc | Links | Text only | - | X |
Misc | Lynx | Text only | - | X |
Misc | IE Mobile | Windows Mobile 6 | - | C |
Misc | PSP browser | PSP | - | C |
Other browsers | All others | - | - | U |
Rendering engine | Browser | Platform(s) | Engine version | CSS grade |
/* * Function: fnGetHiddenTrNodes * Purpose: Get all of the hidden TR nodes (i.e. the ones which aren't on display) * Returns: array: * Inputs: object:oSettings - DataTables settings object */ $.fn.dataTableExt.oApi.fnGetHiddenTrNodes = function ( oSettings ) { /* Note the use of a DataTables 'private' function thought the 'oApi' object */ var anNodes = this.oApi._fnGetTrNodes( oSettings ); var anDisplay = $('tbody tr', oSettings.nTable); /* Remove nodes which are being displayed */ for ( var i=0 ; i<anDisplay.length ; i++ ) { var iIndex = jQuery.inArray( anDisplay[i], anNodes ); if ( iIndex != -1 ) { anNodes.splice( iIndex, 1 ); } } /* Fire back the array to the caller */ return anNodes; } /* Init the table and fire off a call to get the hidden nodes. */ var oTable; $(document).ready(function() { var oTable = $('#example').dataTable(); $('#button').click( function () { var nHidden = oTable.fnGetHiddenTrNodes(); alert( nHidden.length +' nodes were returned' ); } ); } );