Dan Spiteri
Dan Spiteri

Reputation: 373

jquery animations happen randomly

I have a kind of splash screen, where you press one of the logo's and it animates the logo to the center, then loads the content for it. Then when you press the main top logo, it hides the content and goes back to the splash screen. However I am having problems with this.

Such as, the container hides, then comes back.

Look for yourself: http://dan.roguedraco.net/SpyroDev/ If happens if you click the top logo before the content has fully appeared, but I want to allow for all these occurences. Because it is possible a user may do the same.

Javascript:

$(document).ready(function() {

var inPage = false;

$('.ajax-loader').click(function() {
    if(inPage == false) {
        inPage = true;
        var Obj = this;

        $(Obj).siblings("a").fadeOut(500,function() {
            if($(Obj).hasClass('left') || $(Obj).hasClass('right')) {
                $(Obj).animate({left:'300px'},'slow','easeOutBack',function() {             
                    $('#pageContent').fadeIn(500,function() {
                        $("#tabs").tab();
                    });
                });
            }
            else {
                $('#pageContent').fadeIn(500,function() {
                    $("#tabs").tab();
                });
            }
            $(Obj).addClass('current-project');
        });
    }
});

$('#rootLogo').click(function() {
    var Obj = $('.current-project');
    if(inPage == true) {
        inPage = false;
        $('#pageContent').fadeOut(500,function() {
            $(this).hide();
            if($(Obj).hasClass('left')) {
                $(Obj).animate({left:'0px'},'slow','easeOutBack',function() {
                    $(Obj).siblings("a").fadeIn(500);
                });
            }
            else if($(Obj).hasClass('right')) {
                $(Obj).animate({left: '600px'},'slow','easeOutBack',function() {
                    $(Obj).siblings("a").fadeIn(500);
                });
            }
            else {
                $(Obj).siblings("a").fadeIn(500);
            }
            $(Obj).removeClass('current-project');
        });
    }
});

});

Html:

        <div id="thumbnails">
            <div class="row-fluid">
                <div class="span12" style="text-align: center;color:#fafafa;">
                    Click a plugin title for more information and downloads.
                </div>
            </div>
            <div class="row-fluid">
                <div class="span12" id='thumbnails'>
                    <a href="#" class="ajax-loader left" project="JumpPorts" page="Home"><img src="projects/JumpPorts/thumb.png" alt="JumpPorts" /></a>
                    <a href="#" class="ajax-loader" project="RankUpOnKills" page="Home"><img src="projects/RankUpOnKills/thumb.png" alt="RankUpOnKills" /></a>
                    <a href="#" class="ajax-loader right" project="InfoButton" page="Home"><img src="projects/InfoButton/thumb.png" alt="InfoButton" /></a>
                </div>
            </div>
        </div>

        <div id="pageContent" style="display:none;">
            <div class="row-fluid">
                ...

Upvotes: 2

Views: 347

Answers (2)

PlaceUserNameHere
PlaceUserNameHere

Reputation: 126

Have you consider to not make the "" of the logo itself clickable? I mean, you're making your event ready whenever it's clicked.

Try this:

In the event of .ajaxloader add on the logo image a sorrounding it at the end of the code of the event.

Then you switch:

$('#rootLogo').click(function() {
 var Obj = $('.current-project');
 ....
}

for this:

$('#click-event').click(function() {  

// Assuming #click-event is the name of the span you placed

var Obj = $('.current-project');
.....
}

and in the end you delete the span created on the .ajaxloader.click event

It's an idea, you can use it, tell me if it worked

Upvotes: 1

Roko C. Buljan
Roko C. Buljan

Reputation: 206344

.stop()

have you tried to use .stop() before your .animate() and .fadeIn() and other animate methods? like: $(Obj).stop().animate({left:

Upvotes: 1

Related Questions