我正在研究JQuery UI,我在点击锚点时阻止了用户界面,点击我正在将一些网址加载到div中,这就是为什么我阻止用户界面以防止点击然后取消阻止, 出现的问题是阻塞发生一秒钟(或更少)并突然解除阻塞,在这种情况下,请求URL没有完全加载,用户可以单击另一个锚
$('.carousel-main .carousel ul li a').each(function () {
$(this).click(function (e) {
$.blockUI({ message: "Please wait..." });
e.preventDefault();
var hrefvalue = $(this).attr('href');
CallAction(hrefvalue, true);
$.unblockUI()
});
});
以上代码工作正常,我也尝试使用下面的代码代替$ .blockUI,但使用下面的代码没有任何反应
var timeout = setTimeout(function() {
$.blockUI({ message: "Please wait..." });
}, 2000);
如何为这种情况设置时间间隔
答案 0 :(得分:0)
beautified看起来像这样的代码:
$('.carousel-main .carousel ul li a').each(function () {
$(this).click(function (e) {
$.blockUI({
message: "Please wait..."
});
e.preventDefault();
var hrefvalue = $(this).attr('href');
CallAction(hrefvalue, true);
$.unblockUI()
});
});
这意味着$.blockUI
和$.unblockUI
会一个接一个地调用,而解释器不会进入事件循环。可能即使你的CallAction
被阻止(但我认为它不是因为你不需要阻止UI),$.blockUI
也没有机会做任何事情。
尝试从此功能中删除$.unblockUI
,看看$.blockUI
来电是否真正符合您的要求。如果确实如此,则必须在某个回调函数中调用$.unblockUI()
,该函数在您等待的任何内容之后调用 - 而不是在您调用$.blockUI
的同一函数中。
您没有显示要等待的代码,但假设您正在CallAction
内进行AJAX调用,那么您需要在该AJAX的回调中调用$.unblockUI
调用
(作为旁注 - 请记住,AJAX请求可能永远不会完成并永久挂起您的UI,因此您应该添加一些超时以在一段时间后取消阻止UI。)