Переключение видимости столбца с использованием класса в dataTables - PullRequest
1 голос
/ 08 сентября 2011

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

function fnShowHide( iCol ){
    /* Get the DataTables object again - this is not a recreation, just a get of the object */
    var oTable = $('#content-table-redesign').dataTable();

    var bVis = oTable.fnSettings().aoColumns[iCol].bVisible;
    oTable.fnSetColumnVis( iCol, bVis ? false : true );
}

но возможно ли получить столбец, используя идентификатор, класс или другое среднее значение?

Дело в том, что я также позволяю пользователю перетаскивать столбцы по своему желанию, и если я иду по индексу, они могут щелкнуть, чтобы скрыть «id» (столбец 0), но они переместили его куда-то еще, а теперь все, что в позиции 0 скрывается вместо идентификатора.

Либо так, либо каким-то образом обманом плагин все еще связывает индекс столбца независимо от того, куда он перемещен.

EDIT

Вот HTML, тело в основном такое же (каждый td имеет тот же класс, что и его th-родитель)

 <table id="content-table-redesign" class="display">
            <thead>
                <tr>
                    <th class="ID">ID</th>
                    <th class="Name">Name</th>
                    <th class="Domain">Domain</th>
                    <th class="email">email</th>
                </tr>
            </thead>
            <tbody>

Я ищу класс, потому что тот, который содержит этот класс, тот, который будет удален как thead, так и tbody

Ответы [ 3 ]

4 голосов
/ 08 сентября 2011

Я думаю, что самый простой ответ - просто, что dataTables не поддерживает это изначально, и вам нужно вручную извлекать индекс, основанный на классе, самостоятельно.К счастью, это просто!

var iCol = $('#content-table-redesign tr').first().children('td.yourclass').index();
var bVis = oTable.fnSettings().aoColumns[iCol].bVisible;
oTable.fnSetColumnVis( iCol, bVis ? false : true );

Ваш селектор, возможно, должен будет использовать th.yourclass в зависимости от структуры вашей таблицы, конечно.Вместо этого он может читать:

$('#content-table-redesign thead tr').children('th.yourclass').index();

ОБНОВЛЕНИЕ

В зависимости от вашего HTML, вот ваш селектор:

$('#content-table-redesign thead tr').children('th.ID').index();

Вы заметитежурналы консоли "0": http://jsfiddle.net/YeAHB/

1 голос
/ 16 февраля 2017

В последней версии DataTables вы можете указать имя класса и показать / скрыть столбцы.

var data_table = $('#data-table').DataTable();
data_table.columns('.location-col').visible(true);

Надеюсь, это поможет.

0 голосов
/ 08 сентября 2011

Я никогда не использовал этот плагин, но в зависимости от структуры HTML вы можете использовать jQuery .index (), чтобы найти индекс дочернего элемента ...

Взгляните на эту скрипку:

http://jsfiddle.net/UwQ35/

...