【问题标题】:How to assign height to data table element using jquery when we resize window调整窗口大小时如何使用jquery为数据表元素分配高度
【发布时间】:2011-10-03 08:07:13
【问题描述】:

我正在使用 jquery 数据表来显示数据。在身体上使用以下代码加载其设置高度

<table id="RequestsTable" cellpadding="0" cellspacing="0" border="0" class="display" style="width:100%;">

在脚本中,我写下了以下代码。 ScrollY 根据窗口高度计算高度,并在表单加载时分配给数据表。

<script type="text/javascript">
var scrollY = $(window).height()*58/100;

var oTable = $('#RequestsTable').dataTable({
    "sScrollY": scrollY,
    "bPaginate": true,
    "bScrollCollapse": true,

    } );

当窗口调整大小并分配给数据表时,我想再次计算高度。 我尝试了以下代码,但对我不起作用。

var scrollY = $(window).height()*58/100;    
$(window).resize(function () {  
scrollY = $(window).height()*58/100;
});

    var oTable = $('#RequestsTable').dataTable({
        "sScrollY": scrollY,
        "bPaginate": true,
        "bScrollCollapse": true,

        } );

任何人都有任何想法可以实现这一点。 提前致谢。

我试过了,但没有成功

function calcDataTableHeight () {
    return $(window).height()*58/100;
};

$(window).resize(function () {

   var oSettings = oTable.fnSettings();
    oSettings.sScrollY = calcDataTableHeight();
    oTable.fnDraw();
});

var oTable = $('#reqAllRequestsTable').dataTable({
    "sScrollY": calcDataTableHeight()});

还有其他方法可以使用 css 设置高度吗??

【问题讨论】:

    标签: jquery datatables


    【解决方案1】:

    仅更新变量是不够的,您需要将新高度传递给数据表插件(因为它不会在变量内容更改时自动更新):

    var $window = $(window);
    
    var calcDataTableHeight = function() {
        return Math.round($window.height() * 0.58);
    };
    
    var oTable = $('#RequestsTable').dataTable({
        "sScrollY": calcDataTableHeight(),
        "bPaginate": true,
        "bScrollCollapse": true,
    });
    
    $window.resize(function() {
        var oSettings = oTable.fnSettings();
        oSettings.oScroll.sY = calcDataTableHeight(); // <- updated!
    
        // maybe you need to redraw the table (not sure about this)
        oTable.fnDraw(false);
    });
    

    【讨论】:

    • 您好 Niko,我尝试了您的代码,但是当我调整窗口大小时它没有重绘表格。我已经用你的代码更新了我的问题。
    • @Raje 我已经更新了答案中的代码,见上文!有错误的属性被覆盖。
    • 对我不起作用,但 this 对我有用
    • 我不敢相信没有其他更“清晰”的方法可以做到这一点。我是 DataTables 的新手,遇到了同样的问题。由于问题已有 4 年以上的历史,我将继续寻找更好的方法来做到这一点,可能是 DataTables API 中存在函数/插件
    • 我试过这个,它给了我Uncaught TypeError: oTable.fnSettings is not a function
    猜你喜欢
    • 1970-01-01
    • 2014-01-15
    • 2012-12-16
    • 2012-01-12
    • 2012-07-07
    • 2013-01-24
    • 1970-01-01
    • 2011-12-29
    • 1970-01-01
    相关资源
    最近更新 更多