У меня есть DataTable с 20 столбцами. Я хочу иметь флажки над таблицей, чтобы включить / выключить видимость столбца.
Найдена эта статья , в которой для этого использовались ссылки, но эти ссылки имеют жестко закодированные константы в элементах <a>
, представляющих порядковый номер столбца. Я надеялся установить флажки, метка которых совпадает с элементами <th>
в таблице, а затем функцию щелчка, чтобы найти соответствующий столбец и переключить видимость этого столбца.
var animals = $('#animalTable').DataTable({
columns: [
{ data: 'Id', visible: false },
{ data: 'Cats' },
{ data: 'Dogs' }
]
});
<table id="animalTable">
<thead>
<tr>
<th>Id</th>
<th>Cats</th>
<th>Dogs</th>
</tr>
</thead>
</table>
// a set of toggle checkboxes; one for each column
<input id="catscb" class="toggle-vis" type="checkbox" checked>
<label for="catscb">Cats</label>
<input id="dogscb" class="toggle-vis" type="checkbox" checked>
<label for="dogscb">Dogs</label>
Это код из статьи , который показал, как это сделать с помощью жестко закодированных индексов столбцов в атрибуте «столбец данных». Вместо этого я хотел бы использовать метку флажка, чтобы найти столбец.
$('input.toggle-vis').on( 'click', function (e) {
// Get the column API object
var column = table.column( $(this).attr('data-column') );
// 'data-column' above is the issue... hardcoded number in the <a> elements
column.visible( ! column.visible() );
});
Я попытался сделать al oop до go для всех столбцов, но я не уверен, что это за this.data()
внутри функции. Если это структура столбца, то как найти ее значение <th>
и, если совпадение, как изменить видимость этого столбца?
// loop over all columns DataTable, even hidden ones (I hope that's what this does)
animals.columns().every( function () {
var col = this.data();
// compare this col's <th> to "Dogs" (since Dogs checkbox was
// checked) and if a match, get the col index for Dogs column
// and toggle its visibility
});