Подтвердить что ты не робот

Прокрутите таблицу DataTables, чтобы получить содержимое всех ячеек

Я использую jquery dataTables, чтобы создать разбитую таблицу на моем сайте. Мне нужно запустить процесс, который захватывает все данные из определенного столбца. Что-то вроде:

$('.testLink').click(function(){
            var cells = new Array();
            $('#myTable tr td').each(function(){
                cells.push($(this).html());
            });
            console.log(cells);
        });

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

но я действительно хочу знать, как заставить это работать с datatables? Поскольку script скрывает большую часть таблицы для разбивки на страницы, эта функция захватывает только видимые ячейки. Я играл с fnGetData, но я не понимаю. Любые идеи?

4b9b3361

Ответ 1

Чтобы получить доступ ко всем строкам, вы можете:

var rows = $("#myTable").dataTable().fnGetNodes();

В вашем случае это должно работать:

   $('.testLink').click(function(){
        var cells = [];
        var rows = $("#myTable").dataTable().fnGetNodes();
        for(var i=0;i<rows.length;i++)
        {
            // Get HTML of 3rd column (for example)
            cells.push($(rows[i]).find("td:eq(2)").html()); 
        }
        console.log(cells);
    });

Ответ 2

Здесь используется метод fnGetData()

Сначала получите данные из плагина, которые будут видимыми во всех рядах. Петля по каждому массиву данных строки и нажмите index = 1 (вторая ячейка) в новый массив

     oTable = $('#example').dataTable();

      var secondCellArray=[];
      $.each( oTable.fnGetData(), function(i, row){
          secondCellArray.push( row[1]);
    })

     console.log( secondCellArray)

EDit: рабочая демонстрация... посмотрите в консоли после рендера

http://live.datatables.net/apixiv/edit#javascript,html

Ответ 3

jQuery.map в сочетании с fnGetData() делает для компактного решения. Следующая функция вернет одномерный массив, содержащий все значения из obj_dtable n th column:

function getDataTableColumn(obj_dtable,n) {
    return $.map(obj_dtable.fnGetData(), function(val) {
        return val[n];
    });
};

Ответ 4

Вы хотите использовать селектор "EQ". Он начинается с индекса "0", поэтому, если у вас есть..

<tr>
  <td>0</td>
  <td>1</td>
  <td>2</td>
  <td>3</td>
</tr>

Затем, используя

 $("td").eq(3); // last one
 $("td").eq(2); //returns "2"

Имеют смысл?

http://api.jquery.com/eq-selector/