Flexigrid + IE9高度:自动

时间:2011-04-28 13:33:37

标签: height internet-explorer-9 flexigrid

问题非常重要。

如果您使用IE9 转到http://flexigrid.info/ ,并浏览“示例2 ”部分,并且列在可见位置调整大小,则会显示激活水平滚动条。然后你将行悬停在行中,体验Flexigrid大小的增长。我没有经历IE7和IE8,只有IE9。这个问题有高度:自动配置。我还没找到解决方案。请帮帮我!

3 个答案:

答案 0 :(得分:2)

实际上,@ Szenti发布的解决方案只适用于页面上的1个flexigrid,如果有多个,它只会获取它创建的第一个bDiv的高度值并将修复应用于所有。

我认为我修改后的版本适用于一次在页面上有很多灵活键的情况。

ie9Fix: function() {
            var bDivH = $(this.bDiv).height();
            var bDivTH = $('table', this.bDiv).height();
            if(bDivH != bDivTH && p.height=='auto') {
               $(".bDiv").css({height: bDivTH + 18});
            }
        },

答案 1 :(得分:1)

我有同样的问题。感谢@Szenti的答案,然而,一旦这个到位,我就会在表格中的结果通过AJAX重新生成时调整flexigrid。这出现在最新的Chrome,Firefox和IE7 / 8中。

所以我添加了一个(有些人会说脏)浏览器嗅探混合。

全球变量:

var ie9 = false;
if ($.browser.msie && parseInt($.browser.version, 10) == 9) {
    ie9 = true;
}

然后调用@Szanti的方法我将其包装在:

if (ie9) {
 this.ie9Fix();
}

现在适用于所有浏览器。

答案 2 :(得分:0)

解决方案:

您必须编辑flexigrid js。使用以下命令附加g对象:

ie9Fix: function() {
if($(".bDiv").height() != $(".bDiv table").height() && p.height=='auto') {
   $(".bDiv").css({height: $(".bDiv table").height() + 18});
}
},

你必须在2个地方调用ie9Fix功能

  • 在g.dragEnd()函数的最后一行(this.ie9Fix();)
  • 在g.addRowProp()中你必须写一个新事件:

    .mouseleave(函数(){ g.ie9Fix(); })

就是这样!