DataTables - Как получить ячейку из определенной строки? - PullRequest
0 голосов
/ 09 октября 2018

У каждой строки есть идентификатор, # row- (идентификатор из ajax).Теперь я хочу выбрать строку по идентификатору, я получил это на работу.

var row = verzondenTable.row('#row-' + k);

k = ключ от AJAX.

Каждый тд имеет класс на столбец, поэтому первый столбец имееткласс .td-subject, а второй имеет .td-open.

Я хочу выбрать ячейку .td-open из конкретной выбранной строки и установить для нее данные.

Код:

$().ready(function() {
    var verzondenTable = $('#tblVerzondenItems').DataTable({
        "order": [[0,'desc']],
        "columnDefs":[
            { "type": "date-nl", "targets": [ 'th-datum' ] },
            {
                sortable: false,
                targets: [6,7]
            }
            ],
        "initComplete": function(settings, json) {
            $.ajax({
                url : '/mail/feed/mailgun.json',
                type : 'GET',
                dataType:'json',
                success : function(data) {
                    $.each(data, function(k,v) {

                        var row = verzondenTable.row('#row-' + k);
                        verzondenTable.row('#row-' + k).cell('.td-open').data((v['open_rate'] * 100).toFixed(2) + '%');

                    });
                    $('#alert-mailgun').alert('close');
                },
                error : function(request,error)
                {
                    alert("Request: "+JSON.stringify(request));
                }
            });
        }
    });
    // loop over each element and create a tooltip using the data-attribute
    $('.count').each(function() {
        Tipped.create(this, {
            ajax: {
                data: $(this).data('querystring'),
                type: "POST"
            },
            maxWidth: 300,
            skin: 'dark'
        });
    });
});

Ответы [ 3 ]

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

попробуйте function row().child( data [, className ] ) по ссылке https://datatables.net/reference/api/row().child()

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

Если вы хотите пройти через API, вы можете сделать что-то вроде

var row = verzondenTable.row('#row-' + k);
row.nodes().to$().find('.td-open').text((v['open_rate'] * 100).toFixed(2) + '%');
row.draw().invalidate();

nodes() -> получить все узлы
to$() -> преобразовать в экземпляр jQuery
invalidate -> обновить внутреннее устройство DT

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

Как насчет использования селекторов CSS:

$('[id^="row-"] td.td-open').text(your_data);//your_data is the value you want to set.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...