Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ajax jquery-do[x]在multiple.load之后_Ajax_Jquery - Fatal编程技术网

Ajax jquery-do[x]在multiple.load之后

Ajax jquery-do[x]在multiple.load之后,ajax,jquery,Ajax,Jquery,一旦三次装载完成 $("#sidebar a").live("click", function(e){ $(this).addClass("selected loading"); $("#conceptual").load(conceptualUrl, null, function(){ $(this).removeClass('loading').show("fast"); }); $("#development").load(developmentUrl, nul

一旦三次装载完成

$("#sidebar a").live("click", function(e){ 
    $(this).addClass("selected loading");
    $("#conceptual").load(conceptualUrl, null, function(){ $(this).removeClass('loading').show("fast");  });
    $("#development").load(developmentUrl, null, function(){ $(this).removeClass('loading').show("fast"); });
    $("#operational").load(operationalUrl, null, function(){ $(this).removeClass('loading').show("fast"); });
});
三次加载完成后,如何从链接中删除加载类

$("#sidebar a.loading").removeClass("loading");

谢谢

在开始加载之前,将全局变量设置为3;让每个回调函数将其递减1,然后检查是否为零-如果为零,则该回调函数将删除加载类。

在开始加载之前,将全局变量设置为3;让每个回调函数将其递减1,然后检查它是否为零-如果为零,则该回调函数将删除加载类。

快速而肮脏的方法是使用一个变量跟踪加载,该变量在每次运行一个函数时计数:

var to_be_loaded = 3;
var loaded_so_far = 0;

$("#sidebar a").live("click", function(e){ 
    $(this).addClass("selected loading");
    $("#conceptual").load(conceptualUrl, null, function(){ checkLoad(); $(this).removeClass('loading').show("fast");  });
    $("#development").load(developmentUrl, null, function(){ checkLoad(); $(this).removeClass('loading').show("fast"); });
    $("#operational").load(operationalUrl, null, function(){ checkLoad(); $(this).removeClass('loading').show("fast"); });
});

function checkLoad() {
    loaded_so_far ++;
    if(loaded_so_far == to_be_loaded) $("#sidebar a.loading").removeClass("loading");
}
$("#sidebar a").live("click", function(e){ 
    var loadCount = 0;
    $(this).addClass("selected loading");
    $("#conceptual").load(conceptualUrl, null, function(){ 
        loadCount++;
        doSomething();
    });
    $("#development").load(developmentUrl, null, function(){ 
        loadCount++;
        doSomething();
    });
    $("#operational").load(operationalUrl, null, function(){ 
        loadCount++;
        doSomething();
    });

    function doSomething()
    {
        if (loadCount == 3)
        {
            $(this).removeClass('loading').show("fast");
        }
    }
});

一旦
loadCount
达到最大值,执行
doSomething()
函数。

快速而肮脏的方法是使用一个变量跟踪加载,该变量在每次运行其中一个函数时计数:

$("#sidebar a").live("click", function(e){ 
    var loadCount = 0;
    $(this).addClass("selected loading");
    $("#conceptual").load(conceptualUrl, null, function(){ 
        loadCount++;
        doSomething();
    });
    $("#development").load(developmentUrl, null, function(){ 
        loadCount++;
        doSomething();
    });
    $("#operational").load(operationalUrl, null, function(){ 
        loadCount++;
        doSomething();
    });

    function doSomething()
    {
        if (loadCount == 3)
        {
            $(this).removeClass('loading').show("fast");
        }
    }
});
一旦
loadCount
达到最大值,执行
doSomething()
函数。

尝试以下操作:

$("#sidebar a").live("click", function(e){ 
    $(this).addClass("selected loading");
    var num_loaded = 0;
    var num_to_load = 3;   

    function show() {
       num_loaded++;
       if (num_loaded === num_to_load) {
         $(this).removeClass('loading').show("fast");
       }
    }

    $("#conceptual").load(conceptualUrl, null, show);
    $("#development").load(developmentUrl, null, show);
    $("#operational").load(operationalUrl, null, show);
});
show
功能通过闭包保持加载的
num\u
和加载的
num\u到
的可见性。由于函数都是相同的,因此将匿名回调重新分解为单个命名函数也是有意义的。

请尝试以下操作:

$("#sidebar a").live("click", function(e){ 
    $(this).addClass("selected loading");
    var num_loaded = 0;
    var num_to_load = 3;   

    function show() {
       num_loaded++;
       if (num_loaded === num_to_load) {
         $(this).removeClass('loading').show("fast");
       }
    }

    $("#conceptual").load(conceptualUrl, null, show);
    $("#development").load(developmentUrl, null, show);
    $("#operational").load(operationalUrl, null, show);
});

show
功能通过闭包保持加载的
num\u
和加载的
num\u到
的可见性。由于函数都是相同的,因此将匿名回调重新分解为一个命名函数也是有意义的。

这是一个可以在整个站点中重用的有点奇特的功能。应该行得通

var Loader = function () {
    var options = arguments[0];
    this.actions = options.actions;
    if (!this.actions || !this.actions.length) {
        throw 'Loader: FATAL ERROR: Nothing to do. All your base are belong to us.';
    }
    this.onComplete = options.onComplete || function () {};
    this.next();
}

Loader.prototype = {
    next: function () {
        if (this.actions.length) {
            var action = this.actions.pop(), me = this;
            $(action.selector).load(action.url, action.data, me.next);
        } else {
            this.onComplete();
        }
    }
}


var loaders = []; // or maybe  asingle variable you overwrite every time, I don't know

$("#sidebar a").live("click", function(e){
    $(this).addClass("selected loading");
    loaders.push(new Loader({
        actions: [
            {selector: "#conceptual", url: conceptualUrl, data: null},
            {selector: "#development", url: developmentUrl, data: null},
            {selector: "#operational", url: operationalUrl, data: null}
        ],
        onComplete: function () {
            $("#sidebar a.loading").removeClass("loading");
        }
    }));
});

当然,您可以修改加载程序使其更强大;添加方法将新操作排队或删除当前正在运行的操作,可能会使其更通用。我的只是一个又快又脏的例子:)

一些有点奇特的东西,你可以在整个网站上重复使用。应该行得通

var Loader = function () {
    var options = arguments[0];
    this.actions = options.actions;
    if (!this.actions || !this.actions.length) {
        throw 'Loader: FATAL ERROR: Nothing to do. All your base are belong to us.';
    }
    this.onComplete = options.onComplete || function () {};
    this.next();
}

Loader.prototype = {
    next: function () {
        if (this.actions.length) {
            var action = this.actions.pop(), me = this;
            $(action.selector).load(action.url, action.data, me.next);
        } else {
            this.onComplete();
        }
    }
}


var loaders = []; // or maybe  asingle variable you overwrite every time, I don't know

$("#sidebar a").live("click", function(e){
    $(this).addClass("selected loading");
    loaders.push(new Loader({
        actions: [
            {selector: "#conceptual", url: conceptualUrl, data: null},
            {selector: "#development", url: developmentUrl, data: null},
            {selector: "#operational", url: operationalUrl, data: null}
        ],
        onComplete: function () {
            $("#sidebar a.loading").removeClass("loading");
        }
    }));
});

当然,您可以修改加载程序使其更强大;添加方法将新操作排队或删除当前正在运行的操作,可能会使其更通用。我的只是一个又快又脏的例子:)

只需使用jQuery.loadAll。。。哦,等等,它不存在?给你:

$("#sidebar a").live("click", function(e){ 
    var side = $(this);
    side.addClass("selected loading");

    $.loadAll( {
        $(conceptual): conceptualUrl,
        $(development): developmentUrl, 
        $(operational): operationUrl
    },
    function() {
        side.removeClass('loading').show("fast");
    });
});

jQuery.fn.loadAll = function(urls, callback) {
    var loaded = urls.length;
    jQuery.each(urls, function(i, url) {
        this.load(url, function() {
           loaded--;
           if(!loaded && callback)
               callback();
        });
    });
};

只需使用jQuery.loadAll。。。哦,等等,它不存在?给你:

$("#sidebar a").live("click", function(e){ 
    var side = $(this);
    side.addClass("selected loading");

    $.loadAll( {
        $(conceptual): conceptualUrl,
        $(development): developmentUrl, 
        $(operational): operationUrl
    },
    function() {
        side.removeClass('loading').show("fast");
    });
});

jQuery.fn.loadAll = function(urls, callback) {
    var loaded = urls.length;
    jQuery.each(urls, function(i, url) {
        this.load(url, function() {
           loaded--;
           if(!loaded && callback)
               callback();
        });
    });
};

我想你可能有问题。如果(doSomething==3)。我想你的意思是如果(loadCount==3)。但是,无论如何,神奇的数字3在条件中并不是最好的——最好给它起个名字,并在条件中使用它,例如,
if(loadCount==maxLoad)
我想你可能有问题。如果(doSomething==3)。我想你的意思是如果(loadCount==3)。但是,无论如何,神奇数字3在条件中并不是最好的——最好给它起个名字,并在条件中使用它,例如,
if(loadCount==maxLoad)
Good,我希望它能产生一些效果:)Good,我希望它能产生一些效果:)