首页 > Web开发 > 详细

jQuery笔记[0]——tabs中第二个tab里面jqGrid宽度的问题

时间:2014-01-16 23:35:43      阅读:1095      评论:0      收藏:0      [点我收藏+]

问题描述:

bubuko.com,布布扣
<div id="achievement_content">
    <ul>
        <li><a href="#paper">tab0</a></li>
        <li><a href="#student">tab1</a></li>
    </ul>
    <div id="paper">
        <table id="paper_list"></table>
        <div id="paper_pager"></div>
    </div>
    <div id="student">
        <table id="student_list"></table>
        <div id="student_pager"></div>
    </div>
</div>
bubuko.com,布布扣

  上面实现了两个tab,需要在js中 $("#achievement_content").tabs(); 初始化。下面的两个table分别用两个jqGrid实现。

  但是具体实现的时候就发现,当两个jqGrid都是autowidth的时候,只有第一个tab里面的jqgrid可以自动expand,之后的就不可以。

 

参考资料:

  http://stackoverflow.com/questions/2117687/jqgrid-and-jquery-ui-tabs-showing-grids-expanded-only-on-primary-tab-div

  http://forestkqq.iteye.com/blog/671380

  http://www.trirand.com/blog/?page_id=393/help/autowidth-with-jquery-tabs&value=ui.tabs.js%25251&search=1

问题原因:(参考)

  “The default for tabs is that hidden tabs get "display:none". The result of that is that the container size is reported as zero.

  So when the grid in the hidden container initializes, /its/ container has zero size, and it sizes itself accordingly.

解决方法:

  1.  代码如下,但是没反应

bubuko.com,布布扣
$(document).ready(function() {
    var initialized = [false,false];
    $(‘#tabs‘).tabs
    (
        {
            show: function(event, ui)
                {
                    if(ui.index == 0 && !initialized[0])
                    {
                        creationGrid0();
                        initialized[0] = true;
                    }
                    else if(ui.index == 1 && !initialized[1])
                    {
                        creationGrid1();
                        initialized[1] = true;
                    }
                }
        }
    );
});
bubuko.com,布布扣

 

  2. 找到了一个修改过的方法,改为.bind,依然没反应

bubuko.com,布布扣
$(document).ready(function() {
    var initialized = [false,false];
    $(‘#tabs‘).bind(‘tabsshow‘function(event, ui) {  
                {
                    if(ui.index == 0 && !initialized[0])
                    {
                        creationGrid0();
                        initialized[0] = true;
                    }
                    else if(ui.index == 1 && !initialized[1])
                    {
                        creationGrid1();
                        initialized[1] = true;
                    }
                }
  });

bubuko.com,布布扣

 

 3.  以上两种都是经过验证的方法,但是不知道什么原因在我这不能实现。后来我决定放弃对tabs的设置,转而寻求一个更简单的方法

var tab_width = $("#tabs div.ui-tabs-panel:not(.ui-tabs-hide)").width();

来自上面stackflow的一个answer。然后在第二个jqGrid里面设置

width : tab_width,

问题解决。

P.S. tab_width是tab的宽度,赋值给jqGrid的时候会导致它稍宽(比第一个宽了两个像素)。加上一个

tab_width -= 2;

完美解决。修改分辨率之后依然可以实现。

 

问题总结:

  坚持

  另辟蹊径

  

jQuery笔记[0]——tabs中第二个tab里面jqGrid宽度的问题

原文:http://www.cnblogs.com/ZhuJY/p/3522109.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!