JQuery DataTables: ¿Cómo mostrar / ocultar los detalles de las filas con varias tablas?

Básicamente estoy tratando de combinar el código de dos ejemplos dados en la documentación de DataTables El primer ejemplo muestra cómo tener múltiples DataTables en una página, mientras que el otro le permite mostrar / ocultar detalles sobre cada fila.

He aplicado la clase “dataTable” a cada una de mis tablas generadas dinámicamente, por lo que el siguiente código las convierte en DataTables (y desactiva la clasificación en la primera columna, ya que ahí es donde va el icono de mostrar / ocultar):

var oTable = $('.dataTable').dataTable({ "aoColumnDefs" : [ { "bSortable" : false, "aTargets" : [ 0 ] } ], "aaSorting" : [ [ 1, 'asc' ] ] }) 

Luego agrego un detector de eventos para mostrar / ocultar la fila adicional de detalles cuando el usuario hace clic en la imagen en la primera columna:

 $('.dataTable tbody td img').live('click', function() { var nTr = $(this).parents('tr')[0]; if (oTable.fnIsOpen(nTr)) { /* This row is already open - close it */ this.src = "../examples_support/details_open.png"; oTable.fnClose(nTr); } else { /* Open this row */ this.src = "../examples_support/details_close.png"; oTable.fnOpen(nTr, fnFormatDetails(), 'details'); } }); 

El problema es que esto solo funciona para la primera DataTable en la página. Cuando hago clic en el ícono mostrar / ocultar en una fila en cualquier otra tabla, el ícono cambia, pero la fila de detalles no aparece. Otros clics en el mismo icono no tienen efecto. ¿Alguien tiene alguna idea de cómo mostrar / ocultar filas de detalles al usar múltiples DataTables en una página? Aprecio tu ayuda.

ya que estas definiendo

 var oTable = $('.dataTable').dataTable( \\YOURSTUFF)`; 

su variable oTable tiene todas sus tablas de datos como su valor.

Lo único que debe hacer es obtener la tabla de datos que contiene el elemento en el que hizo clic. Puedes lograrlo añadiendo

 tbl = $(this).parent().parent().dataTable(); 

a su función de clic y cambie todas oTable llamadas de oTable a tbl .

Diviértete jugando con eso 😉