datatable css not work

样式不显示问题 无论是放内联样式文件还是直接放HTML文件都不显示

后来发现是因为datatable是放在后面初始化,它自带的样式覆盖了我们自定义的样式

所以要注意写code时,很多时候不是code不起作用,而是后面的code覆盖了前面的code

 

由于一直想改变table的背景颜色,但是第一列的颜色总是被覆盖,找了很久也没找到是哪里覆盖了

我的code是创建全部数据后会收集‘分类’那一列的数据进下拉框中让使用者进行选择

        "initComplete": function () {
            console.log( '表格初始化完成 initComplete' );       // DEBUG
            this.api().columns(4).every( function () {
                var classify_col = this;        // 每一行的第4列元素
                var select = $('<select><option value=""></option></select>')
                    .appendTo( $(classify_col.header()).empty() )
                    .on( 'change', function () {
                        var val = $.fn.dataTable.util.escapeRegex(
                            $(this).val()
                        );
                        classify_col
                            // 搜索条件
                            .search( val ? '^'+val+'$' : '', true, false )
                            // 开始加载
                            .draw();
                    } );
                // 遍历第三列每一个元素 不重复排序添加到option中
                classify_col.data().unique().sort().each( function ( d, j ) {
                    select.append( '<option value="'+d+'">'+d+'</option>' )
                } );
            } );
        },
        // 每一行创建完调用的函数
        "createdRow": function (row, data, dataIndex) {
            // console.log( '一行 createdRow:'+dataIndex ); // DEBUG
            // row : tr dom
            // data: row data
            // dataIndex:row data's index
            $(row).addClass(data.类名);
            
            if(data.类名=="official"){
                $(row).css("background-color","rgb(250, 236, 236)");
            }
            else if(data.类名=="music_stage"){
                $(row).css("background-color","rgb(217, 251, 255)");
            }
            else if(data.类名=="Radio"){
                $(row).css("background-color","rgb(255, 250, 200)");
            }
            else if(data.类名=="group_arts"){
                $(row).css("background-color","rgb(201, 245, 255)");
            }
            else if(data.类名=="tv_station"){
                $(row).css("background-color","aliceblue");
            }
            else if(data.类名=="news"){
                $(row).css("background-color","#cdcfff");
            }
            else if(data.类名=="pub_performance"){
                $(row).css("background-color","#FFCC99");
            }
            else if(data.类名=="pub_performance"){
                $(row).css("background-color","#FFCC99");
            }
            else if(data.类名=="magazine"||data.类名=="cf"){
                $(row).css("background-color","#ffff9c");
            }
            else if(data.类名=="VLOG"){
                $(row).css("background-color","#d4fab4");
            }
            else if(data.类名=="concert"||data.类名=="FM"){
                $(row).css("background-color","#bbedff");
            }
            else if(data.类名=="live"){
                $(row).css("background-color","#ffe3c4");
            }
            else if(data.类名=="teleplay"){
                $(row).css("background-color","#ffcefa");
            }
            else if(data.类名=="other"){
                $(row).css("background-color","#ebd7f4");
            }
        }

即先每一行执行 “createdRow” 全部行执行完之后执行 “initComplete”

在createdRow中我根据数据的不同对每一行的背景颜色进行了设置,但是最后排列出来第一列还是datatable默认的背景颜色,如果在第4列的下拉框中选择了分类排序呈现之后第三列的数据也是datatable默认的背景颜色。

所以我怀疑是每次datatable执行了api之后都会重新带去它默认的样式

于是我去控制台“Elements”->"Styles"中找到默认的样式

 

 

 

(应该是没有删除线的,这是我修改后起作用的图片,我懒得再截了)

之后在css文件中将奇偶行的背景颜色都设为透明:

table.dataTable.display tbody tr.odd>.sorting_1, table.dataTable.order-column.stripe tbody tr.odd>.sorting_1 {
    background-color:transparent;
}
table.dataTable.display tbody tr.even>.sorting_1, table.dataTable.order-column.stripe tbody tr.even>.sorting_1 {
    background-color: transparent;
}

这样datatable默认的样式就不再起作用了,需求实现

posted @ 2018-12-08 11:28  Janey91  阅读(237)  评论(0编辑  收藏  举报