jQuery隐藏和显示方法不会在IE8中冒泡计算高度

时间:2012-05-11 00:50:07

标签: jquery internet-explorer-8 show

使用:jQuery 1.7.1

我在IE8中看到一个问题,我有一个容器div,当使用hide()和show()隐藏/显示子元素(UL)时,它无法正确计算其高度。

这个容器div是一个包装模块内容的模块体。每次模块中的某些东西需要调整模块的高度/宽度时,我们的模块需要有一个刷新方法,这是因为它们需要一个固定的高度来正确渲染它。它通过抓住容器div的高度来实现这一点,但是当我在IE中展开或折叠内部部分时,容器div不会重新计算其高度。

我发现是否用.addClass(" display-none")/ .removeClass(" display-none")替换所有hide()show()(其中) .display-none {display:none;})它解决了这个问题。但是,我希望有一个css解决方案,我仍然可以使用show和hide,一些规则或IE问题/ hack我不知道。

我想问的问题是为什么?

以下是一些更多细节,

  1. 我隐藏和显示的项目是来自内部构建的树窗口小部件的节点组,该窗口小部件由嵌套的无序列表组成,也就是将隐藏和显示应用于<ul> s。
  2. 我有另一个操作隐藏并在树节点中显示元素,此操作确实会导致容器div正确地重新计算其高度。
  3. 包装树的其他div正确地重新计算,它因某些原因停止在容器div冒泡。
  4. 如果代码示例或html示例有帮助我也可以提供,但我真的想看看是否有人碰巧对我遇到的问题有更一般的概念。

    以下是容器的样式

    .module > div > div > * {
        word-spacing: normal;
    }
    
    .module-content-data {
        max-width: 962px;
        padding: 10px 10px 0;
    }
    
    * {
        margin: 0;
    }
    
    .module {
        word-spacing: -1em;
    }
    
    Inherited fromdiv.main
    .main {
        word-spacing: -1em;
    }
    
    Inherited frombody
    body {
        color: #333333;
        font-family: Arial,Calibri,Verdana,Helvetica,Sans-Serif;
        font-size: 11px;
    }
    

1 个答案:

答案 0 :(得分:0)

我最终找到了一个解决方案仍然没有找到原因。显然在IE8 $ .hide()和$ .show中,在某些情况下没有正确设置计算高度。但是,我修改了我的方法来改为使用addClass(“display-none”)调用,并且正确计算了高度。我希望这可以帮助其他任何有类似问题的人。

更新: 在具有相同问题的另一页上,上面列出的“修复”无效。所以我还是不知道。如果我发现更多信息,将会更新。