I want to use jQuery's load function to load some content into a div, and I want to also call jQuery's animate function.
$('#div1').load('...', function() {
    // load complete
});
$('html,body').animate({
    ...: ...}, ..., '...', function(){
    // animate complete
});
I don't want to wait for load to complete before calling animate or vice versa.
Following this I want to call a third function, but I don't want to call it until the complete event for both the load and the animate have been fired.  
How can I do this?
Sounds like a job for Deferred: http://api.jquery.com/category/deferred-object/
var load = $.Deferred(function (dfd) {
  $('#div1').load(…, dfd.resolve);
}).promise();
var animate = $('html,body').animate(…);
$.when(load, animate).then(function () {
  // Do your thing here!
});
                        var _loadComplete = false;
var _animateComplete = false;
$('#div1').load('...', function() {
    // load complete
    _loadComplete = true;
    checkComplete(); 
});
$('html,body').animate({
    ...: ...}, ..., '...', function(){
    // animate complete
    _animateComplete = true;
    checkComplete();
});
function checkComplete() {
    if(_loadComplete && _animateComplete)
        runThirdFunction();
});
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With