bootstrap-table固定表头,同时适配高度,兼容ie,checkbox,固定列解决方案(续)

本文详细介绍了如何解决Bootstrap Table在固定表头、高度适配、IE浏览器兼容性、Checkbox功能及固定列方面的问题。文中提到了在实际应用中遇到的三个问题:兼容性问题、画面重叠和Checkbox操作失效,并提供了相应的解决方案。通过修改原始代码,实现了更完善的固定列功能,包括在切换显示隐藏列时避免重叠,以及确保Checkbox的正常工作。附带了强化版的bootstrap-table-fixed-columns.js文件下载链接。

bootstrap-table固定表头,同时适配高度,兼容ie,checkbox,固定列解决方案(续)

前文链接:bootstrap-table固定表头,同时适配高度,固定列解决方案

上篇本人对 懒得安分 的技术进行改造,得到的一个初始版js插件,此大神的原文:
JS组件系列——自己动手扩展BootstrapTable的 冻结列 功能:彻底解决高度问题

在实战中,bug频频出现,如兼容性不解决,当点击bootstrap-table的显示隐藏列,会出现画面重叠,也就是原来生成的障眼法的表格不删除,还有就是bootstrap-table的左侧checkbox不能使用。

问题一:兼容性

原来代码:ie下 tr.html(′′) tds的内容也清空

var $tr = $(this).clone(),
$tds = $tr.find('td');
$tr.html('');

解决:对其用一个临时变量保存,在清空即可

var $tr1 = $(this).clone(),
$tr= $(this).clone(),
$tds = $tr1.find('td');

$tr.html('');

问题二:画面重叠

原来代码:没有在初始化fixed-column的表前,先对已存在的进行清空,导致每次变化,都会产生新的表格,

BootstrapTable.prototype.initFixedColumns = function () {
    if(this.options.leftFixedColumns){

解决:在初始化障眼表格前,对其进行清空

BootstrapTable.prototype.initFixedColumns = function () {
    $($.find('.fixed-table-header-columns')).remove();
    $($.find('.fixed-table-body-columns')).remove();
    if(this.options.leftFixedColumns){

问题三:checkbox固定使用

原来代码:只是对样式等内容进行静态复制,导致点击checkbox没有效果

解决:对原来的checkbox进行伪造的同时,复制原本不固定列时,点击checkbox需要取的值到伪造的checkbox里面,然后通过自己的getValue()获取选中的checkbox值,小段代码如下:

this.$body.find('tr[data-index]').each(function () {
            var index = $(this).data('index');
            var tmpData = that.options.data[index].id;

            if(that.options.leftFixedColumns){
                that.$fixedBody.find('input[data-index="' + index + '"]').val(tmpData);
            }
            that.$body.find('input[data-index="' + index + '"]').val(tmpData);

        });

getValue()函数的代码如下:

function getValue(){
    var result=[];
    var $tableBody=$('.fixed-table-body-columns');
    if($tableBody.length==0){
        $tableBody=$('.fixed-table-body').find('table');
        var x= $.map($tableBody.bootstrapTable('getSelections'), function (row) {
            return row.id
             // 想返回什么字段就换成什么
            });
        return x;

    }
    if($tableBody.find('input').length==0){
        $tableBody=$('.fixed-table-body').find('table').find('tbody');
    }
    $tableBody.find('input').each(function(){
        if ($(this).attr("checked")) {
            result.push($(this).val())
        }
    });
    return result;  

}

补充css样式代码:

.fixed-table-header-columns,
.fixed-table-body-columns {
    position: absolute;
    background-color: #fff;
    display: none;
    box-sizing: border-box;
    overflow: hidden;
}

.fixed-table-header-columns .table,
.fixed-table-body-columns .table {
    border-right: 1px solid #ddd;
}

.fixed-table-header-columns .table.table-no-bordered,
.fixed-table-body-columns .table.table-no-bordered {
    border-right: 1px solid transparent;
}

.fixed-table-body-columns table {
    position: absolute;
    animation: none;
}

.bootstrap-table .table-hover > tbody > tr.hover > td{
    background-color: #f5f5f5;
}

具体的js文件下载链接:
强化版bootstrap-table-fixed-columns.js

欢迎转载,但请声明原处,

评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值