繁体   English   中英

setTimeout无法与ajaxStart一起正常工作

[英]setTimeout not working properly with ajaxStart

我想在执行ajax请求期间延迟加载gif的外观,以便在请求持续不超过一秒钟时不显示它。 即使显示gif时并没有增加很大的延迟,但是当我在setTimout函数中将值设置为80以上时,事实并非如此。 我想念什么?

function ajaxLoading()
{
    $(document).ajaxStart(function () 
    {
        ajaxLoadingTimeout = setTimeout(function () {
            $('#loading').show();
        }, 1000)

    });

    $(document).ajaxStop(function () {
        clearTimeout(ajaxLoadingTimeout);
        $('#loading').hide();
    });
}

您可以尝试以下方法:

function ajaxLoading()
{    
    var flag=true;
    $(document).ajaxStart(function () 
    {
        flag=true;
        ajaxLoadingTimeout = setTimeout(function () {
            if(flag){
               $('#loading').show();
            }
        }, 1000)

    });

    $(document).ajaxStop(function () {
        flag=false;
        clearTimeout(ajaxLoadingTimeout);
        $('#loading').hide();
    });
}

根据评论更新了答案

function ajaxLoading()
{
    $('document')
    .ajaxStart(function(){
        $("#loading").delay(1000).show();
    })
    .ajaxStop(function(){
        $("#loading").hide();
        $(this).unbind("ajaxStart");
    });
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM