2009-06-21 12 views
11

Ich möchte zwei Dinge auf einmal passieren, wenn ich auf einen Link klicke. Ich gehe langsam durch Jquery-Dokumentation, muss aber noch lernen, was ich noch brauche. HierJquery animate verstecken und zeigen

ist ein Link zu meinem site

Wenn ich auf die Dienste verknüpfe ich würde das #slideshow div verbergen mag, und ein neues div zu ersetzen.

Ich hatte versucht, die Slideshow einfach durch Klicken auf den Link Dienste zu animieren, aber es würde entweder die Animate-Funktion ausführen oder zur verknüpften HTML-Seite wechseln, nicht beides. Wie würde ich beides erreichen?

Es spielt keine Rolle, wenn ich nur divs auf der gleichen Seite verstecken oder anzeigen, oder wenn ich auf eine neue HTML-Seite gehe. Ich möchte nur die animierte Funktion haben und den Inhalt ändern, während ich einen verstecke.

dies ist der jQuery-Code I

$(document).ready(function(){ 
    $("a.home").toggle(
    function(){ 
     $("#slideshow").animate({ height: 'hide', opacity: 'hide' }, 'slow'); 
    }, 
    function(){ 
     $("#slideshow").animate({ height: 'show', opacity: 'show' }, 'slow'); 
    } 
); 
}); 

$(document).ready(function(){ 
    $("a.services").toggle(
    function(){ 
     $("#slideshow2").animate({ height: 'show', opacity: 'show' }, 'slow'); 
    }, 
    function(){ 
     $("#slideshow2").animate({ height: 'hide', opacity: 'hide' }, 'slow'); 
    } 
); 
}); 

Hause und Dienstleistungen sind die beiden Links verwende, und ich würde gerne Dienste beim Anklicken des #slideshow div, sich zu verstecken und die Slideshow2 div zeigen, was wäre, versteckt und dann den ersten ersetzen.

Es gibt eine beträchtliche Menge von HTML, so dass es einfacher sein kann, meine Quelle aus dem Link zu sehen.

Antwort

11

Aktualisiert: Diese Lösung wurde nach einer Folgefrage in den Kommentaren aktualisiert.

Sie sollten die callback method der show/hide-Methoden verwenden.

$("a").click(function(){ 

    /* Hide First Div */ 
    $("#div1").hide("slow", function(){ 
    /* Replace First Div */ 
    $(this).replaceWith("<div>New Div!</div>"); 
    }); 

    /* Hide Second Div */ 
    $("#div2").hide("slow", function(){ 
    /* Replace Second Div */ 
    $(this).replaceWith("<div>New Div!</div>"); 
    }); 

    /* If you wanted to sequence these events, and only 
    hide/replace the second once the first has finished, 
    you would take the second hide/replace code-block 
    and run it within the callback method of the first 
    hide/replace codeblock. */ 

}); 

Die Callback-Methode ist der zweite Parameter der .show/.Hide Funktionen. Es wird ausgeführt, wenn die .show/.hide-Methode abgeschlossen ist. Daher können Sie Ihre Box schließen/öffnen und innerhalb der Callback-Methode sofort ein Ereignis ausführen.

+0

Großartig, das hat funktioniert. Vielen Dank! Nur eine kurze Frage, wie würde ich zwei divs verbergen und sie durch zwei divs mit einem einzigen Klick ersetzen. Technisch bekomme ich es zur Arbeit, aber es ersetzt beide divs mit dem gleichen Ding, also wiederholt es sich. Ich habe meine Website mit dem aktuellen Problem aktualisiert. Könnten Sie mir erklären, warum Ihr Code nicht ohne den vorherigen Code funktioniert, den ich darunter verwendete? –

+0

Die Lösung wurde aktualisiert, um zu demonstrieren, wie Sie zwei divs verbergen und beide durch verschiedene divs ersetzen können. – Sampson

+0

Ja, jetzt erinnere ich mich daran, dass all das in den Tutorials in der jQuery-Dokumentation behandelt wurde, aber ich verstehe es nie, bis es wirklich gebraucht wird. Gibt es eine Möglichkeit, das .hide-up zu animieren, wie slideup, statt alle in die obere linke Ecke –