Как скрыть столбец таблицы, но все же использовать его с событием клика? (JQuery Datatables)

0

Я получаю RecordID и Title из моего источника данных. Я только хочу отобразить столбец Заголовок на экране, но мне нужен RecordID из строки, которая будет использоваться в событии клика. Поэтому я потащил их обоих в свой стол, и я ищу, чтобы скрыть RecordID.

У меня есть таблица, которая заполнена источником ajax, поэтому теги <tr> и <td> для моих данных динамически создаются. Они не являются частью кода, поэтому я не могу просто добавить класс, который я могу скрыть с помощью CSS.

<table id="example">
    <thead>
        <tr>
            <th>RecordID</th>
            <th>TITLE</th>
        </tr>
    </thead>
    <tbody>
        <!---Data and tags are dynamically generated--->
    </tbody>
</table>

В документации DataTables приведено несколько вариантов добавления функции oTable.fnSetColumnVis( 0, false ) или "bVisible":false. Обе эти функции прекрасно скрывают мой столбец, но тогда событие клика, которое у меня было на основе этого столбца, больше не будет работать.

Здесь событие click, которое я использую.

$('#example').on('dblclick', 'tr', function(event) {
 var td = $('td', this);
 var RecordID= $(td[0]).text();
});

Таким образом, вы можете видеть, что он обращается к индексу 0 (первый td или столбец в этой строке.) Как только я скрою этот столбец, другой td станет индексом 0. Мне все еще нужен этот столбец RecordID для получения информации из строки, но я не Не хочу показывать это на экране. Есть идеи?

  • 0
    Если вам не нужен столбец идентификатора, почему бы вам просто не добавить идентификатор в качестве атрибута в строке заголовка.
  • 1
    Если вы используете метод datatables fnSetColumnVis, столбец будет недоступен для каких-либо операций JavaScript. Попробуйте скрыть столбец, используя jquery, установив стиль отображения.
Показать ещё 1 комментарий
Теги:
datatables

1 ответ

1
Лучший ответ

Я понял это, добавив класс при объявлении таблицы.

$(document).ready(function() {
var oTable = $('#example').dataTable( {
    "bJQueryUI": true,
    "bProcessing": false,
    "bServerSide": false,
    "bFilter":false, 
    "bPaginate":false, 
    "bInfo":false, 
    "bSort":false,
    "bAutoWidth":false,
    "sAjaxSource": "datasource.cfm",
    "aoColumns": [
        { "mData": "RecordID", "sClass":"testclass" },
        { "mData": "TITLE" }
    ]
});
 });

И затем css

.testclass {
display:none;
}

После этого JQuery работает.

  • 0
    Это сработало и для меня !!! @madvora

Ещё вопросы

Сообщество Overcoder
Наверх
Меню