• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Slide wird nicht richtig ausgeführt

burn4ever

Mitglied
Hallo,
ich arbeite gerade mit diesem Script hier:
Dynamic Page | Home

Was mich stört ist das erst der Text ausgeblendet wird, dann der neue Text und erst danach der Slide der Bühne ausgeführt wird. Das sieht z.B. nicht so pralle aus wenn man von Menüpunkt "about" nach "home" klickt.

Hier mal das original Skript:
HTML:
$(function() {

    var newHash      = "",
        $mainContent = $("#section"),
        $pageWrap    = $("#page-wrap"),
        baseHeight   = 0,
        $el;
        
    $pageWrap.height($pageWrap.height());
    baseHeight = $pageWrap.height() - $mainContent.height();
    
    $("nav").delegate("a", "click", function() {
        window.location.hash = $(this).attr("href");
        return false;
    });
    
    $(window).bind('hashchange', function(){
    
        newHash = window.location.hash.substring(1);
        
        if (newHash) {
            $mainContent
                .find("#article")
                .fadeOut(200, function() {
                    $mainContent.hide().load(newHash + " #article", function() {
                        $mainContent.fadeIn(200, function() {
                            $pageWrap.animate({
                                height: baseHeight + $mainContent.height() + "px"
                            });

                        });
                        $("nav a").removeClass("current");
                        $("nav a[href="+newHash+"]").addClass("current");
                    });
                });
        };
        
    });
    
    $(window).trigger('hashchange');

});


Ich habe versucht das Skript um zu schreiben. Sprich nach ausbelden des Textes den dic skalieren und dann via callback (Funktion start wird ausgeführt) den neuen Text einblenden:
HTML:
$(function() {

    var newHash      = "",
        $mainContent = $("#section"),
        $pageWrap    = $("#page-wrap"),
        $skalierer   = $("#article"),
        baseHeight   = 0,
        $el;
        
    $pageWrap.height($pageWrap.height());
    baseHeight = $pageWrap.height() - $mainContent.height();
    
    $("nav").delegate("a", "click", function() {
        window.location.hash = $(this).attr("href");
        return false;
    });
    
    $(window).bind('hashchange', function(){
    
        newHash = window.location.hash.substring(1);
        
        if (newHash) {
            $mainContent
                .find("#article")
                .fadeOut(200, function() {
                    $mainContent.hide().load(newHash + " #article", function() {
                         
                            $pageWrap.animate({
                                height: baseHeight + $mainContent.height() + "px"
                           
                        }, start);

                        function start() {
                         $mainContent.fadeIn(200, function() {
                                     // Animation complete
                         });
                     }
                        $("nav a").removeClass("current");
                        $("nav a[href="+newHash+"]").addClass("current");
                    });
                });
        };
        
    });
    
$(window).trigger('hashchange');

});

Geht auch soweit, nur leider wird der div nicht mehr richtig in der Größe skaliert
($pageWrap.animate)

Hat jemand ein Idee wie ich das fixen kann?
 
Zurück
Oben