Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

jquery fade in callback not waiting

im trying to make a div fade out and then have a second div fade in in its place but the callback for the second div to fade is doesn't seem to wait for the first to finish fading, in fact they both fade at the same time giving a cross fade effect father than a fade out and then in afterwards. heres the code:

$(document).ready(function () {

    //toggle story text
    $(function () {
        $("#imageGallery").scroll(function () {

            if ($(this).scrollLeft() > 1000) {

                $("#story2").fadeIn("300", function () {
                    $("#story1").fadeOut("300");
                });


            } else {

                $("#story1").fadeIn("slow");
                $("#story2").fadeOut("slow");
            }
        });

    })

});

and the page im using it in:

http://www.jonathantopf.com/imijstudio/

any ideas why this is happening?

like image 573
jonathan topf Avatar asked Oct 14 '25 13:10

jonathan topf


2 Answers

You're fading IN the new div before fading OUT the other div. That creates a cross fade effect so that's why you're seeing it. Perhaps what you mean to do is:

$("#story1").fadeOut("300", function () {
    $("#story2").fadeIn("300");
});

Fade out the current one before you fade in the next one. Then, you won't see them both on screen at the same time (e.g. no crossfade).

like image 67
jfriend00 Avatar answered Oct 17 '25 03:10

jfriend00


Check this out with example jsfiddle

$("#story1").fadeOut("300").delay(600,function(){$("#story2").fadeIn("300");})
like image 22
Wazy Avatar answered Oct 17 '25 02:10

Wazy