Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jqGrid隐藏div中的宽度不正确_Javascript_Jquery_Jqgrid - Fatal编程技术网

Javascript jqGrid隐藏div中的宽度不正确

Javascript jqGrid隐藏div中的宽度不正确,javascript,jquery,jqgrid,Javascript,Jquery,Jqgrid,我使用的是jqGrid版本4.4.1。我需要在页面上创建x个网格。第一个网格以可见块的形式输出,但其他网格以以下格式输出 <div style='display:none'> //My jqGrid output </div> //我的jqGrid输出 visible div中输出的第一个表具有正确的宽度: <div class="ui-jqgrid ui-widget ui-widget-content ui-corner-all" id="gbox_tab

我使用的是jqGrid版本4.4.1。我需要在页面上创建x个网格。第一个网格以可见块的形式输出,但其他网格以以下格式输出

<div style='display:none'>
//My jqGrid output
</div>

//我的jqGrid输出
visible div中输出的第一个表具有正确的宽度:

<div class="ui-jqgrid ui-widget ui-widget-content ui-corner-all" id="gbox_table0" dir="ltr" style="width: 920px;">

但所有其他表格的宽度都不正确:例如100px

<div class="ui-jqgrid ui-widget ui-widget-content ui-corner-all" id="gbox_table1" dir="ltr" style="width: 100px;">


当我尝试以可见div呈现所有表格时,所有宽度都计算正确。

是的,您是对的。。当
display:none
时,网格宽度将无法正确计算。要解决此问题,您必须确定负责显示网格的事件,在该事件中,在显示网格后,您应该使用
setGridWidth
函数正确设置网格的宽度

由于您没有使用单独的列宽,我建议您将网格包装在一个div中(假设其id为container_grid),并且在显示网格时,将其宽度设置为包装div的宽度

如果使用百分比表示div元素的宽度(或者说流体布局),则可以使用javascript的
offsetWidth
方法获得包装div的宽度,如下所示

if($('#container_grid').attr("id")!==undefined)        
            grid.setGridWidth($("#container_grid")[0].offsetWidth);

简单的解决方案是在初始化网格时使用固定宽度:

而不是:

    autowidth       : true,
使用:


这样,即使您将网格显示设置为“无”,它也将保持所需的宽度。

如果元素被隐藏,则.width()将返回零。您建议什么解决方案?我需要在tabsI javascript解决方案中立即呈现X个表,因为我使用bootstrap,它将帮助其他bootstrap jqgrid用户设置超时(function(){$('.tab content.active')。而不是(':first')。removeClass('active');},200)是否为每个列设置了宽度?我的网格是隐藏的,只有在“主”网格中选择了以正确宽度显示的行后才会显示和加载数据?我只使用了autowidth:true。当我尝试在显示中呈现表格时出现问题:无块非常感谢!
    width           :  1030,