Datatables, изменение цвета строки после вызова Ajax - PullRequest
0 голосов
/ 14 октября 2011

Я редактирую таблицу данных, используя функции ajax и fnOpen, чтобы добавить строки на основе определенного условия. Вот как выглядит мой код:

$('#table tr').each(function(){
    id = this.id.substr(4);
    var result2;
    $.ajaxSetup({async:false});
    $.post('file.php', {id: id}, function(result) {
        result2 = result;
    }); 
    if (result2 .length > 0) {
        oTable.fnOpen( this, 'Notes: ' + result2, "info_row");
    }
});

Выше отлично работает, вставляя данные в новую строку. Однако после того, как это будет сделано, я бы хотел изменить новую добавленную строку и сделать ее такой же, как и предыдущая. Как я могу получить доступ к опциям datatables и сделать это? Как узнать класс предыдущего ряда? Я очень плохо знаком с таблицами данных и иногда немного теряюсь!

Спасибо!

Ответы [ 3 ]

0 голосов
/ 15 октября 2011

Вы можете найти класс текущей строки, используя:

$('#table tr').each( function () {
                        var rowClass = $(this).attr("class");

Когда вы вызываете fnOpen, третий параметр - это класс, который будет назначен элементу TD, содержащему введенную строку.В настоящее время вы всегда ставите жестко запрограммированный класс «info_row», но если вы присваиваете какое-то динамическое значение, которое зависит от rowClass, вы можете присвоить ему стиль того же цвета, что и текущая строка.

0 голосов
/ 16 октября 2011

То, как вы добавляете мои данные, поражает воображение. если вы делаете это, установка нескольких классов должна быть легкой. ; -)

Предполагая, что новая строка находится в DOM к концу функции, это должно быть довольно просто. В той же функции после добавления DOM (поэтому 'this' - это строка таблицы, которая в настоящее время находится в итераторе .each ()):

var $this = $(this) // might as well do this caching near the beginning of the function
var prevClass = $this.prev().class();
$this.addClass(prevClass);

Я уверен, что вы видите, что вам на самом деле не нужно создавать переменную "prevClass", но я просто хочу, чтобы все было четко и организованно. ; -)

0 голосов
/ 14 октября 2011

Во-первых, я не думаю, что вы хотите звонить $.ajaxSetup в каждом - вы меняете глобальные настройки ajax каждый раз, когда проходите через each.Сделайте это один раз, когда ваше приложение запустит , если вы хотите, чтобы все, что вы делаете в настройке, применялось ко всем вызовам ajax.

Во-вторых, просто измените ваш вызов post, чтобы изменить цвет строки вобратный вызов

$.post('file.php', {id: id}, function(result) {
    result2 = result;
    // modify row color here
}); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...