【问题标题】:IE select visible although its parent is hiddenIE 选择可见,尽管它的父级是隐藏的
【发布时间】:2011-01-05 06:24:33
【问题描述】:

我有一个动态 HTML 文档,在某个特定时间点,它有一个类似的标记(当然,要复杂得多):

<div style="display: none">
    <select><option>some text</option></select>
</div>
<div>
    Some text
</div>

我的问题是,在 IE 6 中,选择仍然可见,即使它的父级设置为 display: none。有没有其他人遇到过这个问题?我想我记得很久以前在复选框中也看到过这个问题。其他浏览器(当然)也可以工作,包括 IE8。

当然,如果你尝试在IE6中只看这个sn-p,是没有问题的。这是一个错误,只是按正确的顺序做事才会触发。

【问题讨论】:

标签: css internet-explorer-6


【解决方案1】:

我无法重现该问题,在 ie6 上尝试过,它没有显示选择。

你能放更多的代码,包括你正在使用的js吗?

此外,ie6 在遇到小事时往往会发出嘶嘶声。

尝试添加一个“;”到你的CSS结束。如下所示: 还没有看到你的代码,但这可能就是让 ie 正常运行所需要的全部内容。

【讨论】:

  • 我的问题是它是不可重现的,而且它只发生在非常特定的情况下。我拥有的显示问题的页面很大,并且依赖于大量的 javascript 来解决问题。我希望有人会回应“是的,我已经看到了这个问题,我通过将 CSS 属性 foo 设置为 bar 来解决它”。 (有一个类似的错误,有些东西虽然应该不可见,但可以通过设置缩放来解决:1)
【解决方案2】:

虽然我不确定,但我想我点击了this issue

【讨论】:

    【解决方案3】:

    我也遇到过这样的问题。对我来说,当我像这样清空它们时,不可见的选择框会突然变得可见:

    select.empty();
    

    我发现在没有 jQuery 的情况下清空选择框解决了这个问题:

    select[0].options.length = 0;
    

    但是,这引入了一个新问题,当我下次调用 select.val() 时,IE6 会抛出错误“无法设置选定的属性。未指定的错误。”

    具有讽刺意味的是,我在 select.empty() 调用之后调用 select.show() 找到了另一个解决方案。我猜测 show() 会诱使浏览器根据父项重新计算可见性。这允许它首先意识到元素不应该是可见的。所以这对我有用:

    select.empty()
    
    // some code to repopulate the list
    
    select.show();
    

    【讨论】:

      猜你喜欢
      • 2015-02-21
      • 2012-04-25
      • 1970-01-01
      • 2013-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-26
      • 1970-01-01
      相关资源
      最近更新 更多