我正在使用jQuery BlockUI插件(v2),因为它会破坏casbah。
对于在页面上发出的每个ASP.NET AJAX请求,我使用InitializeRequest和EndRequest客户端事件分别阻止和取消阻止UI - 这使我可以轻松地抛出“请稍候......”对话。代码如下:
var prm = Sys.WebForms.PageRequestManager.getInstance();
prm.add_endRequest(EndRequest);
prm.add_initializeRequest(InitializeRequest);
var blockTimer;
var blockTimerFired;
function InitializeRequest(sender, args) {
blockTimer = setTimeout(blockPage, 100);
blockTimerFired = false;
}
function EndRequest(sender, args) {
unblockPage();
}
function unblockPage() {
// Check if the timer has run yet, and if it hasn't, cancel it
if (blockTimerFired) {
document.body.style.cursor = "default";
$.unblockUI();
}
else {
clearTimeout(blockTimer);
}
}
function blockPage() {
document.body.style.cursor = "wait";
var loadingMessage = '<div style="padding-top:30px;min-height:75px;font-weight:bold;font-size:12pt;"><img align="absmiddle" src="../Images/ajax-loader.gif" /> Please wait...</div>';
$.blockUI({ centerX: true, centerY: true, css: { backgroundColor: '#ebebeb', color: '#000' }, message: loadingMessage });
blockTimerFired = true;
}
以上行为正常。但是,在某些情况下,我还使用blockUI(在同一页面上)来创建是/否模态对话框。文档准备就绪时会加载此对话框。
问题是我在 unblockPage()中的 $ .unblockUI()调用似乎会终止这两个对话框。有没有办法我可以轻松地使用$ .unblockUI()来定位特定的div?例如,如果我可以打电话给 $ .unblockUI(“#myYesNoDiv”),那就太好了。
答案 0 :(得分:4)
我过度复杂了这个问题。
当您使用命令 $。blockUI()时,它首先删除页面上任何现有的blockUI div。我问过我是否可以定位一个特定的div,但一次只有一个div存在于页面上,所以我的问题毫无意义。遗憾!
因此,我所要做的就是给div我检查一个id,然后检查它是否存在于页面上。我能够简化代码和来解决我的问题:
新代码:
function unblockPage() {
// Check if the timer has run yet, and if it hasn't, cancel it
if ($("#divBlockPage").length > 0) {
document.body.style.cursor = "default";
$.unblockUI();
}
else {
clearTimeout(blockTimer);
}
}
// Blocks page UI.
function blockPage() {
document.body.style.cursor = "wait";
var loadingMessage = '<div id="divBlockPage" style="padding-top:30px;min-height:75px;font-weight:bold;font-size:12pt;"><img align="absmiddle" src="../Images/ajax-loader.gif" /> Please wait...</div>';
$.blockUI({ centerX: true, centerY: true, css: { backgroundColor: '#ebebeb', color: '#000' }, message: loadingMessage });
}
答案 1 :(得分:1)
似乎没有那个选项。看看simplemodal。我在想这些日子里,它撼动了casbah。我知道你可能会被封锁,但我想我会提到它。