Просмотрите таблицу DataTables, чтобы получить содержимое всех ячеек - PullRequest
22 голосов
/ 07 марта 2012

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

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

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

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

Ответы [ 4 ]

47 голосов
/ 07 марта 2012

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

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);
    });
6 голосов
/ 07 марта 2012

Вот метод, использующий fnGetData ()

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

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

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

     console.log( secondCellArray)

РЕДАКТИРОВАТЬ: рабочая демонстрация ... смотреть в консоли после рендеринга

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

4 голосов
/ 19 декабря 2012

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

function getDataTableColumn(obj_dtable,n) {
    return $.map(obj_dtable.fnGetData(), function(val) {
        return val[n];
    });
};
1 голос
/ 07 марта 2012

Вы захотите использовать селектор «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/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...