我正在使用 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") 那就太好了。