【问题标题】:bgiframe with jQuery UI 1.8.9 Dialog and jQuery 1.5带有 jQ​​uery UI 1.8.9 对话框和 jQuery 1.5 的 bgiframe
【发布时间】:2011-06-29 22:39:10
【问题描述】:

所以我使用的是 jQuery UI 的对话框。但正如我所读的,IE6 中有一个常见的错误(不幸的是,我必须确保这适用)下拉列表不关注 z-index 队列。我还读到有一个方便的插件叫做 bgiframe 来解决我的覆盖问题。我发现人们说使用它的两种不同方式,但都不起作用。我可能只是在做一些非常愚蠢的事情,但我需要让它发挥作用。

包括 jQuery.bgiframe.js 版本 2.1.1 以下是我尝试在不工作的情况下使用它的两种方法:(我在我正在处理的页面中包含了所有 jQuery-UI、jQuery 和 bgiframe)

  1. 实际插件的文档说这样做:

    $("#selectDropdownThatNeedsFixing").bgiframe();
    

    这会导致一个 jQuery 异常说 Object expected.

  2. 我从以下页面看到的第二种方式:http://docs.jquery.com/UI/Dialog/dialog 基本上你只需在初始化对话框时设置bgiframe: true

    $( ".selector" ).dialog({ bgiframe: true });
    

这并没有报错,但是当我测试它时,问题仍然存在于IE6中。

我错过了什么吗?我应该以哪种方式使用 bgiframe?任何方向将不胜感激。感谢您的帮助!

【问题讨论】:

    标签: jquery css jquery-ui jquery-ui-plugins bgiframe


    【解决方案1】:

    我相信您应该调用dialog 上的bgiframe 插件,而不是< select >。 当前的 jQuery UI 版本似乎不再列出对话框小部件的 bgiframe 选项。

    您得到的 jQuery 异常似乎表明,您所定位的元素对于指定的选择器 (#selectDropdownThatNeedsFixing) 不存在。

    如果问题仍然存在,请尝试使用 IE 开发者工具栏查看 iframe 是否实际创建。

    【讨论】:

    • 我尝试了 ("#dialog").bgiframe() 并且仍然得到相同的 jQuery 异常。我仔细检查了,选择器正在抓取元素,但在其上调用 bgiframe() 会导致错误。有什么想法吗?
    【解决方案2】:

    您不需要为此使用插件。 IE6 和 z-index 的问题是,IE6 中的定位元素会生成一个新的堆叠上下文,从 z-index 值 0 开始。因此 z-index 在 IE6 中无法正常工作。此问题的解决方法是在父选择器中指定一个 z-index 值,该值等于在子选择器中指定的 z-index。

    http://jsfiddle.net/ebgnu/2/查看工作示例

    下面是我在 jsfiddle 中做的例子。

    .parent{
        position: relative;
        color:white;
    }
    .parent#a {
        height: 2em;
        z-index: 1;
    }
    .parent#a .child{
        position: absolute;
        height: 6em;
        width: 2em;
        z-index: 1;
        background:blue;
    }
    .parent#b {
        height: 2em;
        background:red;
    }
    
    <div class="parent" id="a">
        <div class="child">a</div>
    </div>
    <div class="parent" id="b">
        <div class="child">b</div>
    </div>
    

    查看.parent#a 这是子选择器a 的父选择器,其z-index 为1。在此示例中,a 将位于b 之上。假设我们想让 b 在 a 上。我们需要做的就是将子a 和它的父z-index: 0 的值更改为。这会将其发送到后面。

    【讨论】:

    • 这实际上不是一个“真正的”z-index 问题; IE6 真正忽略了选择框的 z-index。 (相反,选择框是在单独的通道中绘制的,导致它们出现在除 iframe 和 IIRC 对象(如 Flash)之外的所有内容之上。)More info via Google.
    • 选择框与此无关。这是 IE6 的堆叠顺序问题。正如我所提到的,在父级上设置 z-index 将专门解决 OP 的 jQuery 对话框问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-29
    • 2011-07-31
    • 2016-02-20
    • 2013-05-08
    • 2012-04-10
    相关资源
    最近更新 更多