Получить индекс скрытой ячейки в таблице с адаптивным расширением

У меня есть встроенные jQuery DataTables и кнопка с «проверяющим» классом в одной из его ячеек, я хотел бы получить индекс ячейки, которая содержит эту кнопку, как только я нажму кнопку.

Для этого я использовал следующий код:

$("#table tbody").on('click','.checking',function(){
    var index = '';
    index = $("#table").DataTable().cell($(this).parents('td')).index();
    console.log(index);
});

Это работает нормально, когда ячейка не была скрыта отзывчивым расширением DataTables, однако, когда это поле скрыто, эта функция выдает undefinedзначение.

Смотрите кнопку » Go » на скриншоте ниже.

Datatable Изображение

1 ответ

  1. ПРИЧИНА

    Если отзывчивый модуль скрывает столбец, по умолчанию он помещает все содержимое в отдельный trузел с одним tdузлом в виде списка с несколькими liузлами.

    Когда ячейка становится скрытой, код cell($(this).parents('td'))перестает работать из-за другой разметки.

    РЕШЕНИЕ

    • DataTables 1.10.11+ и отзывчивый 2.0.2 + только

      $('#table tbody').on('click','.checking',function(){
          var index = $('#table').DataTable().cell($(this).closest('td, li')).index();
          console.log(index);
      });  
      

      См. этот jsfiddle для кода и демонстрации.

    • DataTables 1.10+ и отзывчивый 1.0.3+

      Этот метод использует устаревший методresponsive.index(), который может быть удален в будущих версиях, и его использование не рекомендуется.

      $('#example tbody').on('click','.checking',function(){
          var $cellNode = $(this).closest('td, li');        
      
          var cell;
          if($cellNode.is('td')){
             cell = $('#example').DataTable().cell($cellNode);
          } else {
             var cellIdx = $('#example').DataTable().responsive.index($cellNode);
             cell = $('#example').DataTable().cell($cellNode);
          }
      
          var index = cell.index();
          console.log(index);
      });    
      

      См. этот jsfiddle для кода и демонстрации.