diff --git a/.datatables-commit-sync b/.datatables-commit-sync index c98abf0c..feec4090 100644 --- a/.datatables-commit-sync +++ b/.datatables-commit-sync @@ -1 +1 @@ -56e4fd1cdbaddc9b9ca4d4788c88640caa7db1e3 +2cee9bcfddd46dfb0afc36325d550b8fb99f0f1d diff --git a/examples/api/row_details.html b/examples/api/row_details.html index 23db6ec3..b44d2660 100644 --- a/examples/api/row_details.html +++ b/examples/api/row_details.html @@ -71,7 +71,7 @@ $(document).ready(function() { if ( row.child.isShown() ) { // This row is already open - close it - row.child.hide(); + row.child( false ); tr.removeClass('shown'); } else { @@ -185,7 +185,7 @@ $(document).ready(function() { if ( row.child.isShown() ) { // This row is already open - close it - row.child.hide(); + row.child( false ); tr.removeClass('shown'); } else { diff --git a/media/js/jquery.dataTables.js b/media/js/jquery.dataTables.js index f4a20c61..d28742f7 100644 --- a/media/js/jquery.dataTables.js +++ b/media/js/jquery.dataTables.js @@ -7717,26 +7717,42 @@ }; - var __details_display = function ( show ) { - var ctx = this.context; + var __details_remove = function ( api ) + { + var ctx = api.context; - if ( ctx.length && this.length ) { - var row = ctx[0].aoData[ this[0] ]; + if ( ctx.length && api.length ) { + var row = ctx[0].aoData[ api[0] ]; + + if ( row._details ) { + row._details.remove(); + + row._detailsShow = undefined; + row._details = undefined; + } + } + }; + + + var __details_display = function ( api, show ) { + var ctx = api.context; + + if ( ctx.length && api.length ) { + var row = ctx[0].aoData[ api[0] ]; if ( row._details ) { row._detailsShow = show; + if ( show ) { row._details.insertAfter( row.nTr ); } else { - row._details.remove(); + row._details.detach(); } __details_events( ctx[0] ); } } - - return this; }; @@ -7746,15 +7762,17 @@ var namespace = '.dt.DT_details'; var drawEvent = 'draw'+namespace; var colvisEvent = 'column-visibility'+namespace; + var destroyEvent = 'destroy'+namespace; + var data = settings.aoData; - api.off( drawEvent +' '+ colvisEvent ); + api.off( drawEvent +' '+ colvisEvent +' '+ destroyEvent ); - if ( _pluck( settings.aoData, '_details' ).length > 0 ) { + if ( _pluck( data, '_details' ).length > 0 ) { // On each draw, insert the required elements into the document api.on( drawEvent, function () { api.rows( {page:'current'} ).eq(0).each( function (idx) { // Internal data grab - var row = settings.aoData[ idx ]; + var row = data[ idx ]; if ( row._detailsShow ) { row._details.insertAfter( row.nTr ); @@ -7768,22 +7786,36 @@ // a colspan) var row, visible = _fnVisbleColumns( settings ); - for ( var i=0, ien=settings.aoData.length ; i