javascript - 在 Bootstrap 中模态宽度始终为 0

标签 javascript jquery twitter-bootstrap jqgrid

这是jqgrid中加载完成的函数。

我有一个通过单击按钮打开的 Bootstrap 模式。在该模式中我有一个 jqgrid。当我在加载完成中调用函数时,在该函数中,附加跨度的宽度始终为0。您可以看到下面的函数:

function columnresize(id) { 

    $(this).parent().append('<span id="widthTest" />');

    gridName = this.id;

    $('#gbox_' + gridName + ' .ui-jqgrid-htable' + gridName).css('width', 'inherit');
    $('#' + gridName).parent().css('width', 'inherit');

    var columnNames = $("#" + gridName).jqGrid('getGridParam', 'colModel');
    var thisWidth;
    var itmCount = columnNames.length;
    /*var grid = $('#' + gridName);
    var iids = grid.getDataIDs();*/
    // Loop through Cols
    for (var itm = 0; itm < itmCount; itm++) {

    var curObj = $('[aria-describedby=' + gridName + '_' + columnNames[itm].name + ']');

    var thisCell = $('#' + gridName + '_' + columnNames[itm].name + ' div');
    $('#widthTest').html(thisCell.text()).css({
    'font-family': thisCell.css('font-family'),
    'font-size': thisCell.css('font-size'),
    'width': thisCell.css('width'),
    'font-weight': thisCell.css('font-weight')
    });


    var maxWidth = Width = $('#widthTest').width() + 17;
    //var maxWidth = 0;
    var itm2Count = curObj.length;
            // Loop through Rows
            for (var itm2 = 0; itm2 < itm2Count; itm2++) {

            var thisCell = $(curObj[itm2]);

            $('#widthTest').html(thisCell.html()).css({
            'font-family': thisCell.css('font-family'),
            'font-size': thisCell.css('font-size'),
            'font-weight': thisCell.css('font-weight')
            });

            thisWidth = $('#widthTest').width();
            if (thisWidth > maxWidth) {maxWidth = thisWidth+10;}
            }

    $('#' + gridName + ' .jqgfirstrow td:eq(' + itm + '), #' + gridName + '_' + columnNames[itm].name).width(maxWidth).css('min-width', maxWidth+17);
    $('#' + gridName + ' .jqgfirstrow td:eq(' + 0 + '), #' + gridName + '_' + columnNames[0].name).width('30').css('min-width', '30px');
    //grid.setRowData ( iids[itm], false, {height: 30} );

    }
    $('#widthTest').remove();
}

我在 jqgrid 的加载完成中调用上述函数,如下所示:

loadComplete: function() {
columnresize.call(this, 'Table');
}

行中的宽度$('#widthTest').width():

var maxWidth = Width = $('#widthTest').width() + 17;

始终为 0!

有什么想法吗?

最佳答案

经过大量研究,我发现因为它是一个隐藏的dom元素,所以我必须使用this

jquery获取隐藏dom元素的实际大小。

感谢@Justinas。

关于javascript - 在 Bootstrap 中模态宽度始终为 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26625717/

相关文章:

javascript - 无法从 $http.post 获取数据

javascript - 如何在 AngularJS 中进行 View 重定向而不需要不断的服务器请求

javascript - 通过函数访问对象值

javascript - jQuery 从 HTML 解析 JSON 不起作用

css - 如何在 Bootstrap 4 中使用图像作为导航背景

JavaScript:参数列表后缺少语法错误 )

javascript - 仅当特定的其他 div 被点击时才显示 div

javascript - IE8 问题 - 对象不支持属性或方法错误

javascript - 将值从 jQuery Modal 传递到最后一个输入框

CSS - 更改 Bootstrap 导航栏上按钮的位置