2009-07-23 11 views
1

Ich weiß, dass dies für einige von euch einfach ist, also bitte hilf mir! Ich habe 3 Panels (divs), die ich nacheinander von einem Klick auf eine Schaltfläche schieben möchte. Ein Panel zu schieben ist einfach, aber wie werden mehrere Divs nacheinander verschoben? Danke.jQuery: Schiebepaneele nacheinander

+0

Wir müssen wirklich Code sehen, um Ihnen ein funktionierendes Beispiel zu geben. – Sneakyness

Antwort

1

Obwohl ich wirklich wie Kane's solution, können Sie es etwas schwer zu verstehen, wenn Sie nicht wissen, ‚anonyme Funktionen‘ und arguments.callee Funktionen von JavaScript-Sprache .

Nach funktioniert auch:

$('#slideDiv').click(
    function(e) 
    { 
     e.preventDefault(); 
     var i = -1; 
     var divList = $(".slide"); 
     var animationCallback = function() 
      { 
       if(++i < divList.length) 
        $(divList[i]).slideUp('slow', animationCallback); 
        //Replace 'slideUp' with any other animation of your choice. Make sure to pass 'animationCallback' as the last parameter. 
        //e.g. you can do 
        //$(divList[i]).animate({ left : '300px'}, 100, 'linear', animationCallback); 
      }; 

     animationCallback(); 
    } 
); 

Demo Page →

EDIT:

aktualisiert Demo-Seite. Kommentar zur Verwendung verschiedener Animationen hinzugefügt

+0

Ihr seid großartig. 30 Minuten und schau was schon gemacht wurde! Anyhoo, du hast recht, ich verstehe keine anonymen Funktionen usw. Wenn ich mir deinen Code ansehe, denke ich, dass die Länge der Liste bestimmt, wann mit der Animation des nächsten div begonnen wird? Was, wenn ich die Divs horizontal von rechts nach links schieben wollte? – lnvrt

+0

Länge der Liste bestimmt, ob eine weitere Animation sequenziert werden muss. Z.B. Der obige Code funktioniert, wenn Sie das vierte div mit der Klasse 'slide' hinzufügen. Es animiert das 4. div, nachdem das 3. animiert wurde. Und wenn Sie eine andere Animation wünschen, ändern Sie die 'SlideUp'-Methode mit der entsprechenden Methode. Lassen Sie mich den Code bearbeiten, um Ihnen zu zeigen, wie. – SolutionYogi

+0

ich ein bisschen CSS hinzugefügt http://jsbin.com/adaca/edit // macht es ein bisschen klarer ... – lnvrt

8

Geben Sie den 3 Divs eine Klasse ".slide_panel", diese wird durch sie durchlaufen und die Animation darauf ausführen.

$("#button").click(function() 
{ 
    var i = -1; 
    var arr = $(".slide_panel"); 
    (function(){ 
    if(arr[++i]) 
    $(arr[i]).animate({ left: "300px" }, 100, "linear", arguments.callee) 
    })(); 
}); 

Demo Page →

Code

+0

+100, Ausgezeichnete Verwendung von arguments.callee! Hier ist die funktionierende Demoseite. http://jsbin.com/utebe Ich dachte, dies könnte dem Autor helfen zu verstehen, wie die DIVs strukturiert werden sollen. – SolutionYogi

+0

Ich habe Ihren Beitrag bearbeitet, um den Link zur Demo-Seite hinzuzufügen, ich hoffe, es macht Ihnen nichts aus. – SolutionYogi

+0

Ich würde die if-Bedingung nur etwas anders schreiben. if (++ i SolutionYogi