我不能让BlockUI在模态对话框上工作 我试图照顾z-index问题,但没有成功......
在我的网页中,这是头部:
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" ></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.17/jquery-ui.min.js" ></script>
<script type="text/javascript" src="http://jquery.malsup.com/block/jquery.blockUI.js?v2.38" ></script>
<link media="all" type="text/css" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.17/themes/base/jquery-ui.css" rel="stylesheet" />
和身体:
<div id="dialog_test" title="Test">
TEST
</div>
<a href="#" id="go">GO</a>
<script>
$(function() {
$( "#dialog_test" ).dialog({
autoOpen: false,
modal: true,
buttons: {
"Cancel": function() {
$( this ).dialog( "close" );
},
"Ajax": function() {
$.ajax({
"url" : "http://jquery.malsup.com/block/wait.php",
"success" : function(json) {
$( "#dialog_test" ).dialog( "close" );
}
});
}
}
});
$( "#go" ).click(function(event) {
event.preventDefault();
$( "#dialog_test" ).dialog( "open" );
});
});
$(document)
.ajaxStart(function() {
$.blockUI({
theme: true
})
})
.ajaxStop($.unblockUI);
</script>
有什么想法吗?
答案 0 :(得分:45)
您没有使用z-index指定您尝试过的内容。
blockUI插件有一个选项可以更改它创建的消息的z-index(documentation):
// z-index for the blocking overlay
baseZ: 1000,
jQuery UI对话框也是option for specifying a z-index。它的默认值是1000.所以你必须为BlockUI选项设置一个更高的数字,让我们说2000:
$.blockUI({
theme: true,
baseZ: 2000
})
<强> DEMO 强>
答案 1 :(得分:2)
感谢迪迪埃的回答,这有助于我走上正轨。您会注意到Didier的答案中的jsfiddle在您第一次打开对话框时工作,但任何进一步打开和ajax会导致blockUI元素出现在对话框下方。每次打开时,对话框必须重新校准它的z-index为最佳狗。
我找到了两种可能的方法:
而不是阻止整个UI,只是阻止 对话。这可以使用widget method来完成,如下所示:
$( ".selector" ).dialog( "widget" ).block({
theme: false,
message: '<h1>Wait for me please...</h1>',
css: { border: '3px solid #a00' }
});