我正在开发一些Jquery对话框,发现当我设置Modal: true时对话框被隐藏了。当设置Modal: false时,我发现一切都如预期的那样工作。希望有人能帮助我。
<asp:Button ID="btnOpendialog" runat="server" Text="Button" ClientIDMode="Static" />
<div id="dialog">
<h1>Test</h1>
<asp:Button ID="btnClickfromDialog" runat="server" Text="Button" />
</div>
$(function () {
$("#btnOpendialog").click(function (e) {
$("#dialog").dialog("open");
return false;
});
$("#dialog").dialog({
height: 200,
modal: true,
autoOpen: false,
open: function () {
$(this).parent().appendTo($("form:first"));
}
});
});
我修复了。没有多少人在抱怨这个问题。只有我这样吗?总之,这是我如何解决它。如果你知道怎么做,这很简单。
.ui-widget-overlay
{
z-index: 0;
}
我尝试了公认的答案,它似乎在某些情况下工作,但不是其他情况。使用同样的想法,这是我想出的代码…
.ui-dialog {
z-index: 9999 !important;
}
…这是基于.ui-widget-overlay
的z指数为9998
。
此外,为了解决覆盖层不覆盖页面的全部高度的问题(因为.ui-widget-overlay
只有1000%
的高度),我想出了这个:
.ui-widget-overlay {
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
}
你需要停止像这样使用appendTo,而使用新的对话框选项"appendTo"
:
$( ".selector" ).dialog({ appendTo: "#someElem" });
取自jquery-ui文档http://api.jqueryui.com/dialog/option-appendTo
我所需要的是将z-index:1
应用于ui-dialog
。没有z-index
我可以应用到ui-widget-overlay
来使这个工作。
我在Wordpress中这样做,包括'jquery', 'jquery-ui-core', 'jquery-ui-dialog'脚本。这是我的相关css:
.ui-widget-overlay {
position: absolute;
top: 0;
left: 0;
width:100%;
height:100%;
background: #aaaaaa;
opacity: 0.3;
}
.ui-dialog {
background-color: #FFFFFF;
overflow: hidden;
z-index:1;
}
您可以创建一个jsFiddle来在您的环境之外重新创建这个问题吗?如果没有,下面是我的一些想法:
把你的javascript放到一个document ready block中,像这样:
$(document).ready(function() {
// Your javascript here...
});
将btnOpendialog更改为非asp。. NET服务器控件。因为它所做的只是打开jquery对话框,所以它不需要是一个服务器控件。改成这样:
<input type="button" id="btnOpendialog" value="Button" />