tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
6
ZUGRIFFE
1572
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    DiDiJo DiDiJo ist offline Mitglied Brokat
    Registriert seit
    Sep 2008
    Beiträge
    285
    Hi Leute,

    ich bastel gerade ein großes Homepagesystem um. Dort benutzen mehrere Homepages die gleichen Scripte ... unter anderem nutzen alle Homepages ein und dieselben jQuery.js Dateien.

    Nun möchte ich eine Funktion bauen, die mir nacheinader die Homepage elemente einblendet. Eigentlich wäre es besser für jedes Layout eine eigene Einblendfunktion zu bauen (um auf Sonderfälle einzugehen) aber da ic hsowas in Zukunft so ode rso nochmal brauche, möchte ich es im Ersten schritt direkt für alle Layouts machen.

    Am liebsten würde ich folgende Funktion haben : "blendeElemnteEin(array,speed)". In dem Paramter Array (oder String --> IDs mit Komma getrennt) sollen hintereinader die HTML-IDs stehen die eingelendet werden sollen und in speed steht die Anzahl der Millisekunden.

    Wie ich mehrere LIs in einer Liste hintereinader einblenden lasse weiß ich ... aber eine beliebige Liste an Elementen ... da bin ich etwas überfragt. Kann mir da vlt wer von euch helfen ?

    mfg


    Aus sowas:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    
    $("#box1").fadeIn("slow", function(){
     
      $("#box2").fadeIn("slow", function(){
     
        $("#box3").fadeIn("slow", function(){
     
          $("#box4").fadeIn("slow", function(){
     
            $("#box5").fadeIn("slow");
     
          });
     
         });
     
       });
     
    });

    soltle eine evtl. ein oder 2zeilige funktio entstehen die mir nacheinader alles abarbeitet ...



    Sowas in der Art hatte ich mir vorgestellt ... aber da kann ich auch keine Reihenfolge vorgeben und ich bin auf bestimmte IDs angewiesen und müsste ggf die CSS von zig Seiten umbauen:
    Code :
    1
    2
    3
    4
    5
    6
    
    $(function() {
       var $sequence = $('div[id$=_div]').hide(), div = 0;
       (function(){
           $($sequence[div++]).fadeIn('slow', arguments.callee);
       })();
    });
    Daniel
    Geändert von DiDiJo (15.07.10 um 17:36 Uhr)
     

  2. #2
    Quaese Quaese ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Feb 2004
    Beiträge
    3.451
    Hi,

    ein ähnliches Thema hatten wir erst gestern. Ist zwar für Prototype, sollte jedoch für jQuery nicht schwerer sein:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    
    <html>
    <head>
    <title>www.tutorials.de</title>
    <meta name="author" content="Quaese">
    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
    <script src="jquery-1.4.2.min.js" type="text/javascript"></script>
    <script type="text/javascript">
      <!--
    function fnFx(arrIDs){
      $("#"+arrIDs[0]).fadeIn("slow", function(){
        fnFx($.map(
         arrIDs,
          function(elementOfArray, indexInArray){
            return ((indexInArray==0)? null: elementOfArray);
          })
        );
      });
    }
     
    $(function(){
      fnFx(['outputId1', 'outputId2', 'outputId3']);
    })
     //-->
    </script>
    </head>
    <body>
    <div id="outputId1" style="display: none;">1</div>
    <div id="outputId2" style="display: none;">2</div>
    <div id="outputId3" style="display: none;">3</div>
    </body>
    </html>

    Ciao
    Quaese
     
    Vielleicht muss man manchmal vom Weg abkommen, um nicht auf der Strecke zu bleiben!
    ----
    Der "Fortsetzungsroman" auf www.leuteforum.de

    New kind to realize large scalable projects with jQuery: jQuery SDK

  3. #3
    DiDiJo DiDiJo ist offline Mitglied Brokat
    Registriert seit
    Sep 2008
    Beiträge
    285
    Astrein ... das funktioniert Super

    Vielen Dank
     

  4. #4
    DiDiJo DiDiJo ist offline Mitglied Brokat
    Registriert seit
    Sep 2008
    Beiträge
    285
    Kurze Frage noch ... kann man dieses Script so umbauen, dass ich dahinter noch eine Callback Funktion ausführen kann. Also nachdem alle Elemente eingeblendet wurden führe die ü+bergebene Funktion aus
     

  5. #5
    Quaese Quaese ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Feb 2004
    Beiträge
    3.451
    Hi,

    du kannst die Funktion um einen weiteren Parameter in der Parameterliste erweitern. Dieser nimmt die callback-Funktion auf.

    Innerhalb der Funktion prüfst du, ob das ID-Array noch Elemente enthält. Ist es noch nicht leer, wird weiterhin gefadet, im anderen Fall wird die callback-Funktion ausgeführt.

    Beispiel:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    
    function fnFx(arrIDs, fnCallback){
      if(arrIDs.length > 0){
        $("#"+arrIDs[0]).fadeIn("slow", function(){
          fnFx(
            $.map(
              arrIDs,
              function(elementOfArray, indexInArray){
                return ((indexInArray==0)? null: elementOfArray);
              }
            ),
            fnCallback
          );
        });
      }else{
        fnCallback();
      }
    }
     
    $(function(){
      fnFx(['outputId1', 'outputId2', 'outputId3'], function(){ alert("Geschafft");});
    })

    Ciao
    Quaese
     
    Vielleicht muss man manchmal vom Weg abkommen, um nicht auf der Strecke zu bleiben!
    ----
    Der "Fortsetzungsroman" auf www.leuteforum.de

    New kind to realize large scalable projects with jQuery: jQuery SDK

  6. #6
    DiDiJo DiDiJo ist offline Mitglied Brokat
    Registriert seit
    Sep 2008
    Beiträge
    285
    cool ... das werde ich gleich mal einbauen ... kann man dieser funktion nun auch die art der animation übergeben. Wenn sowas nicht funktioniert müsste ich mir ja im schlimmsten fall eine funktion zum einfadden, zum ausfaden [...] etc bauen.

    ich krieg übrigens jetzt nen Fehler:
    "uncaught exception: Syntax error, unrecognized expression: #"

    bei folgendem Aufruf
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    
    var elem1 = new Array('#head','#logo','#HeadRight','#seoleiste','#main','#left','#suche','#news_block');
    fadeInElements(elem1,speed);
     
    // oder 
     
    fadeInElements(elem1,speed,function(){
            alert("fertig");
        });

    aber der fehler bleibt imemr der gleiche
     

  7. #7
    Quaese Quaese ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Feb 2004
    Beiträge
    3.451
    Hi,

    du musst die IDs ohne Doppelraute übergeben.

    Wenn die Animationsfunktion übergeben werden soll, könnte das über einen String (fadeIn oder fadeOut) in einem weiteren Argument erfolgen.

    Beispiel:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    
    function fnFx(arrIDs, [B]strAnimFn[/B], fnCallback){
      if(arrIDs.length > 0){
        $("#"+arrIDs[0])[B][strAnimFn][/B]("slow", function(){
          fnFx(
            $.map(
              arrIDs,
              function(elementOfArray, indexInArray){
                return ((indexInArray==0)? null: elementOfArray);
              }
            ),
            [B]strAnimFn,[/B]
            fnCallback
          );
        });
      }else{
        fnCallback();
      }
    }
     
    $(function(){
      fnFx(['outputId1', 'outputId2', 'outputId3'], [B]'fadeIn'[/B], function(){ alert("Geschafft");});
    })

    Ciao
    Quaese
     
    Vielleicht muss man manchmal vom Weg abkommen, um nicht auf der Strecke zu bleiben!
    ----
    Der "Fortsetzungsroman" auf www.leuteforum.de

    New kind to realize large scalable projects with jQuery: jQuery SDK

Ähnliche Themen

  1. [jQuery] Drag mehrere Divs
    Von sub7even im Forum Javascript & Ajax
    Antworten: 0
    Letzter Beitrag: 04.09.10, 20:29
  2. Mehrere Divs mit JQuery ein und ausklappen
    Von Kristian im Forum Javascript & Ajax
    Antworten: 1
    Letzter Beitrag: 16.03.10, 21:09
  3. mehrere divs hintereinander
    Von SuReBuRn im Forum CSS
    Antworten: 11
    Letzter Beitrag: 03.02.06, 06:31
  4. mehrere Formulare hintereinander
    Von soa im Forum PHP
    Antworten: 4
    Letzter Beitrag: 09.09.05, 16:14
  5. Mehrere sql-Befehle hintereinander
    Von bled im Forum PHP
    Antworten: 2
    Letzter Beitrag: 07.02.05, 16:40