gpt4 book ai didi

如果对话框的父级具有固定位置,jQuery 模态对话框将被覆盖 div 隐藏

转载 作者:太空宇宙 更新时间:2023-11-04 14:23:35 26 4
gpt4 key购买 nike

我的一个 jQuery 对话框是在具有固定位置(页脚)的 div 中定义的。当打开一个模态 jQuery 对话框时,jQuery 创建一个覆盖 div 来隐藏整个页面,然后将要打开的对话框放在具有比覆盖 div 更高的 z-index 的顶部。不幸的是,在具有固定位置的 div 中呈现的任何对话框都被覆盖 div 覆盖,尽管要打开的模式对话框的 z-index 比覆盖本身更大。

为了演示问题,我简化了以下 HTML 代码,显示了非固定位置 div 和固定位置 div 中的对话框之间的区别:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
<link type="text/css" rel="stylesheet" href="/demo-webapp/faces/javax.faces.resource/themes/sam/theme.css?ln=primefaces&amp;amp;v=2.2.1" />
<link type="text/css" rel="stylesheet" href="/demo-webapp/faces/javax.faces.resource/jquery/ui/jquery-ui.css?ln=primefaces&amp;v=2.2.1" />
<title>CSS TEST</title><script type="text/javascript" src="/demo-webapp/faces/javax.faces.resource/jquery/jquery.js?ln=primefaces&amp;v=2.2.1"></script><script type="text/javascript" src="/demo-webapp/faces/javax.faces.resource/jquery/ui/jquery-ui.js?ln=primefaces&amp;v=2.2.1"></script>

<script>
/*<![CDATA[*/
jQuery(function() {
jQuery("#dialog1").dialog({
autoOpen: false,
modal: true
});

jQuery("#dialog2").dialog({
autoOpen: false,
modal: true
});
});
/*]]>*/
</script>
</head>

<body>
<div style="z-index: 1; position: static;" onclick="jQuery('#dialog1').dialog('open')">
position: static; /* default */
<div id="dialog1" title="Dialog1"></div>
</div>

<div style="z-index: 1; position: fixed; left: 100px; top: 100px" onclick="jQuery('#dialog2').dialog('open')">
position: fixed;
<div id="dialog2" title="Dialog2"></div>
</div>
</body>

</html>

加载页面后显示如下:

Page after it is loaded

正常 div 中的对话框正确显示

第一个对话框使用非固定位置的 div 定义,对话框正常显示:

First dialog appears correctly

固定定位的 div 中的对话框被覆盖

请注意,当显示在固定位置的 div 中定义的第二个对话框时,用户无法单击它,因为它被覆盖 div 覆盖:

Second dialog does not appear correctly

请注意,overlay div 的 z-index 在这两种情况下都是 1001,而 dialog 的 z-index 是 1002。所以 overlay div 不应该覆盖对话框,但不幸的是,固定位置的对话框就是这种情况分区

因为我使用的是 Primefaces,所以我必须使用 jQuery 1.4.4。该问题出现在 Firefox 4 最新版本和 Safari 最新版本中。

你能重建这个问题吗?你有解决方案吗?请注意,我不想将对话框放在固定位置的 div 之外,虽然它可以解决问题。这样做的原因是我正在使用 JSF 的模板机制,因此我的页面的页脚将动态填充内容——在本例中是一个弹出对话框。如果我必须将对话框放在其他地方,它会破坏模块化。

最佳答案

我在这里得到了同样的东西,我只是将位置设置为固定在叠加层上并且它起作用了。

.ui-widget-overlay{
position:fixed;
}

关于如果对话框的父级具有固定位置,jQuery 模态对话框将被覆盖 div 隐藏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5663137/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com