Получить Id DataTables динамически - PullRequest
1 голос
/ 20 апреля 2020

Я хочу извлечь идентификатор таблицы из таблицы данных без указания имени таблицы в функции. Например: вместо указания var tableName = $ ('# myTable'). Attr ('name') Я хочу получить имя таблицы без записи # myTable

$(document).ready(function() {

  $('#myTable').DataTable( {
    dom: 'Bfrtip',
    buttons: [
      { extend : 'collection',
        text : '<i class="fa fa-bars">buttons</i>',
        buttons: [
          'copy', 'csv', 'excel', 'pdf', 'print',
          {
            text: 'Report Issue',
            action: function ( e, dt, node, config ) {
              reportIssue(e, dt, node, config);
            }
          }
        ]
      }]
  } );

  // e - the button click event
  // dt - the datatable object
  // node - button node
  // config - the button's config (e.g. 'text')
  function reportIssue(e, dt, node, config) {    
    var tableName = $('#myTable').attr('name');
    alert( 'The "' + config.text + '" button was clicked\n' 
        + 'for the "' + tableName + '" table.' );
  }

});

Ответы [ 2 ]

1 голос
/ 20 апреля 2020

Взгляните на https://datatables.net/reference/api/%24.fn.dataTable.tables ()

$.fn.dataTable.tables().forEach(function(dt) {
  console.log( dt.id ) //in your case myTable
})

, если у вас есть только одна таблица или вы знаете, что искать

console.log( $.fn.dataTable.tables()[0].id ) //myTable
1 голос
/ 20 апреля 2020

Найдите контейнер с данными с помощью dt.table().container(), а затем найдите таблицу внутри него:

function reportIssue(e, dt, node, config) {    
  var container = dt.table().container();
  var tableName = $(container).find("table").attr('name');
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...