DataTables получить класс конкретного столбца - PullRequest
0 голосов
/ 11 октября 2018

Я хотел бы восстановить класс определенного столбца

Действительно, я хочу посчитать количество уникальных классов определенного столбца

В документации по DataTables я нашел, как получитьданные из столбца:

  var table = $('#myTable').DataTable({
    "aaSorting": []
  });

  var nbr = table.column( 2 ).data().unique().count();
  console.log (nbr)

Но я не могу найти, как получить класс определенного столбца

РЕДАКТИРОВАТЬ:

<table id="myTable">
  <thead>
    <tr>
      <th>Column 1</th>
      <th>Column 2</th>
      <th>Column 3</th>
      <th>Column 4</th>
      <th>Column 5</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td></td>
      <td class="867">Msg 1</td>
      <td></td>
      <td></td>
      <td></td>
    </tr>
    <tr>
      <td></td>
      <td class="867">Msg 2</td>
      <td></td>
      <td></td>
      <td></td>
    </tr> 
    <tr>
      <td></td>
      <td class="1087">Msg 3</td>
      <td></td>
      <td></td>
      <td></td>
    </tr> 
    <tr>
      <td></td>
      <td class="867">Msg 4</td>
      <td></td>
      <td></td>
      <td></td>
    </tr>  
  </tbody>
</table>

В этом примере у меня должно быть число 2 (для двух разных классов) - класс добавляется через foreach (PHP)

Ответы [ 2 ]

0 голосов
/ 11 октября 2018

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

var getTable = $('#myTable tbody tr');

getTable.each(function(){
  console.log(this).find('td:nth-child(2)').attr('class');
});
<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<table id="myTable">
  <thead>
    <tr>
      <th>Column 1</th>
      <th>Column 2</th>
      <th>Column 3</th>
      <th>Column 4</th>
      <th>Column 5</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td></td>
      <td class="867">Msg 1</td>
      <td></td>
      <td></td>
      <td></td>
    </tr>
    <tr>
      <td></td>
      <td class="867">Msg 2</td>
      <td></td>
      <td></td>
      <td></td>
    </tr> 
    <tr>
      <td></td>
      <td class="1087">Msg 3</td>
      <td></td>
      <td></td>
      <td></td>
    </tr> 
    <tr>
      <td></td>
      <td class="867">Msg 4</td>
      <td></td>
      <td></td>
      <td></td>
    </tr>  
  </tbody>
</table>

это должно дать вам значение класса атрибута

0 голосов
/ 11 октября 2018

Вы можете использовать $("table tr td:nth-child(2)"), чтобы получить все ячейки из определенного столбца.

Затем используйте .map с return this.className, чтобы извлечь имена классов

, за которыми следует 'уникальный«/« отличное »действие над массивом для их ограничения: см. https://stackoverflow.com/a/14438954/2181514

function onlyUnique(value, index, self) { 
    return self.indexOf(value) === index;
}

var clsnames = $("table tr td:nth-child(2)")
                   .map(function() { 
                       return this.className
                   })
                   .toArray()
                   .filter(onlyUnique);

console.log(clsnames.length)
$("#result>span").text(clsnames.length);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table id="myTable">
  <thead>
    <tr>
      <th>Column 1</th>
      <th>Column 2</th>
      <th>Column 3</th>
      <th>Column 4</th>
      <th>Column 5</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td></td>
      <td class="867">Msg 1</td>
      <td></td>
      <td></td>
      <td></td>
    </tr>
    <tr>
      <td></td>
      <td class="867">Msg 2</td>
      <td></td>
      <td></td>
      <td></td>
    </tr> 
    <tr>
      <td></td>
      <td class="1087">Msg 3</td>
      <td></td>
      <td></td>
      <td></td>
    </tr> 
    <tr>
      <td></td>
      <td class="867">Msg 4</td>
      <td></td>
      <td></td>
      <td></td>
    </tr>  
  </tbody>
</table>
<div id='result'>Result: <span></span></div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...