【问题标题】:Datatables, changing row colors after Ajax call数据表,在 Ajax 调用后更改行颜色
【发布时间】:2011-10-14 15:09:43
【问题描述】:

我正在使用 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");
    }
});

以上工作完美,将数据插入新行。但是,完成后,我想更改新添加的行并使其颜色与前一行相同。我怎样才能从这里访问数据表选项,并做到这一点?我怎样才能知道上一行的班级?我对数据表很陌生,有时有点迷茫!

谢谢!

【问题讨论】:

    标签: javascript jquery datatables


    【解决方案1】:

    你可以在使用中找到当前行的一个类:

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

    当您调用 fnOpen 时,第三个参数是一个类,该类将分配给包含注入行的 TD 元素。目前,您总是放置硬编码的“info_row”类,但如果您分配一些取决于 rowClass 的动态值,您可以将其样式设置为与当前行相同的颜色。

    约万

    【讨论】:

      【解决方案2】:

      他们添加我的详细信息行的方式让我大吃一惊;如果您要做到这一点,那么设置一些课程应该很容易。 ;-)

      假设新行在函数结束时位于 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”,但这正是我喜欢让事情保持直截了当和有条理的方式。 ;-)

      【讨论】:

        【解决方案3】:

        首先,我认为您不想在 each 中调用 $.ajaxSetup——每次通过 each 时,您都在更改全局 ajax 设置。在您的应用启动时执行一次如果您希望您在设置中执行的任何操作都应用于所有 ajax 调用。

        其次,只需更改您的post 调用即可修改回调中的行颜色

        $.post('file.php', {id: id}, function(result) {
            result2 = result;
            // modify row color here
        }); 
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-06-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-10-19
          • 1970-01-01
          • 2017-12-28
          • 2021-09-07
          相关资源
          最近更新 更多