Jquery Block UI设置时间间隔

时间:2012-09-18 12:05:05

标签: jquery

我正在研究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);

如何为这种情况设置时间间隔

1 个答案:

答案 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。)