Zu den Aufzeichnungen der tutorials.de-Live-Workshops
Seite 1 von 2 12 LetzteLetzte
ERLEDIGT
JA
ANTWORTEN
17
ZUGRIFFE
638
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    querytail querytail ist offline Mitglied Gold
    Registriert seit
    Jul 2010
    Beiträge
    105
    Hallo zusammen,

    ich habe eine kleine Funktion, in der
    PHP-Code:
    hide(1000); 
    nach einem hover einen Container verschwinden lässt, aber mit Animation.

    Jetzt habe ich
    PHP-Code:
    $(this).animate({opacity:1},1000 
    ausprobiert, allerdings spielt das nach 5 mouseovers verrückt und verschwindet garnicht mehr oder sofort.

    Wie kann ich das verläßlich regeln?

    Grüße & Danke

    Michael Meyer
     

  2. #2
    Avatar von Sven Mintel
    Sven Mintel Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.238
    Blog-Einträge
    6
    Moin,

    du müsstest vor der Zuweisung der neuen Animation die aktuelle laufenden Animationen(sofern vorhanden) stoppen.

    Dies geht mit..... stop()
    Geändert von Sven Mintel (24.08.10 um 14:26 Uhr)
     

  3. #3
    querytail querytail ist offline Mitglied Gold
    Registriert seit
    Jul 2010
    Beiträge
    105
    Cool, danke. Das geht.

    Leider habe ich nun ein Problem mit IE 8.
     

  4. #4
    Avatar von Sven Mintel
    Sven Mintel Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.238
    Blog-Einträge
    6
    Zitat Zitat von querytail Beitrag anzeigen
    Leider habe ich nun ein Problem mit IE 8.
    ...das da wäre?
     

  5. #5
    querytail querytail ist offline Mitglied Gold
    Registriert seit
    Jul 2010
    Beiträge
    105
    Es wird garnichts mehr angezeigt, d.h. das DIV welches verschwinden soll, kommt erst garnicht.
    Geändert von querytail (24.08.10 um 14:46 Uhr)
     

  6. #6
    Avatar von Sven Mintel
    Sven Mintel Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.238
    Blog-Einträge
    6
    Poste mal bitte mehr von deinem Code, von
    kommt erst garnicht
    ...war ja bisher keine Rede.
    Wenn du dieses Container auch einblendest, wäre dies natürlich auch eine Animation, die von stop() betroffen wäre.
     

  7. #7
    querytail querytail ist offline Mitglied Gold
    Registriert seit
    Jul 2010
    Beiträge
    105
    PHP-Code:
    $("ul.nav") .mouseover(function() { 
            
            $(
    this).parent().find("ul.nav2").show();
            $(
    this).parent().hover(function() {
            }, function(){    
                $(
    this).parent().find("ul.nav2").hide(); 
            });
        }); 
     

  8. #8
    Avatar von Sven Mintel
    Sven Mintel Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.238
    Blog-Einträge
    6
    Mmmh, ja

    Das Problem mit dem IE kann ich damit nicht reproduzieren, ohne das Markup dazu zu Sehen.

    Was auf jeden Fall ein Problem ist:
    Du weist ja das Hover-Verhalten bei jedem mouseover von ul.nav erneut zu...bei jquery heisst das, du überschreibst es nicht, sondern du fügst es hinzu...bei jedem Hovern wird dann das Ganze so oft versucht zu Starten, wie bereits mouseover in ul.nav gefeuert hat.
    Umgehen kannst du dies per one()

    Da dies aber nicht unbedingt das Problem im IE8 erklärt, hab ich mal nen Beispiel fertiggemacht(funktioniert auch im IE8)
    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; 
                                    charset=UTF-8"   />
    <meta name="author"             content="doktormolle" />
    <meta name="date"               content="2010-08-24" />
    <title>Test</title>
    <script src="http://code.jquery.com/jquery-latest.min.js"></script>
     
    <script id="testscript" type="text/javascript">
    <!--
    //nur für css-zeugs
    $('html').addClass('scripted');
     
    $(document).ready(function(){
    $('ul.nav')
      //Event nur 1x beachten
      .one('mouseenter', 
            function() 
            {
              //Transparenz und visibility ändern, spart das ganz opacity-Zeugs im CSS
              $(this).parent().find("ul.nav > li ul").css({opacity:0,visibility:'visible'})
              
              //Eventüberwachung
              $(this).parent().find("ul.nav > li").hover(function() 
                {
                  $(this).find("ul.nav2").stop().fadeTo('fast',1);
                }, 
                function()
                {    
                  $(this).find("ul.nav2").stop().fadeTo(1000,0);
                }
              );
        }); 
    });
    //-->
    </script>
    <style type="text/css">
    <!--
    ul,li{list-style-type:none;margin:0;padding:0;}
    html.scripted ul.nav2{visibility:hidden;border:1px dotted #717171}
    ul.nav{background:#919191;padding:4px;}
    ul.nav li ul{background:#a1a1a1;}
    ul.nav li span{background:#c1c1c1;display:block;font-weight:bold;}
    -->
    </style>
    </head>
    <body>
    <ul style="width:200px;">
      <li>
        <ul class="nav">
          <li><span>#1</span>
            <ul class="nav2">
              <li>#1.1</li>
              <li>#1.2</li>
              <li>#1.3</li>
            </ul>
          </li>
          <li><span>#2</span>
            <ul class="nav2">
              <li>#2.1</li>
              <li>#2.2</li>
              <li>#2.3</li>
            </ul>
          </li>
          <li><span>#3</span>
            <ul class="nav2">
              <li>#3.1</li>
              <li>#3.2</li>
              <li>#3.3</li>
            </ul>
          </li>
        </ul>
      </li>
    </ul>
     
    </body>
    </html>
     

  9. #9
    querytail querytail ist offline Mitglied Gold
    Registriert seit
    Jul 2010
    Beiträge
    105
    Hallo und danke,

    leider funktioniert das nicht. Gibt es keine Möglichkeit, das funktionierende hide ohne Animation 1 Sekunde zu verzögern?

    Grüße & Danke

    Michael Meyer
     

  10. #10
    Avatar von spicelab
    spicelab spicelab ist offline goaspicy
    Registriert seit
    Feb 2010
    Beiträge
    1.392
    Zitat Zitat von querytail Beitrag anzeigen
    leider funktioniert das nicht.
    Achja? Was denn?

    Da mußt du hier weit und breit der einzige User sein, denn Svens Codebeispiel aus Post #8 funktioniert bei mir erwartungsgemäß, und wie von ihm angekündigt, anstandslos im IE8.

    Glaubst du allen ernstes, dass er hier den Hilfesuchenden vollmundig funktionstüchtigen Code unterjubelt, der sich anschliessend als untauglich erweist?
    Geändert von spicelab (28.08.10 um 13:37 Uhr)
     

  11. #11
    querytail querytail ist offline Mitglied Gold
    Registriert seit
    Jul 2010
    Beiträge
    105
    Hallo,

    das Script funktioniert als solches, aber ich benötige, wie geschrieben, eines ohne Animation, d.h. die Ausführung von hide soll "einfach" verzögert werden.

    Grüße

    Michael Meyer
     

  12. #12
    Avatar von Sven Mintel
    Sven Mintel Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.238
    Blog-Einträge
    6
    Dann nehme die Animation heraus und füge vor dem Ausblenden eine Verzögerung(delay()) ein:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    
    $(document).ready(function(){
    $('ul.nav')
      //Event nur 1x beachten
      .one('mouseenter', 
            function() 
            {
              //Transparenz und visibility ändern, spart das ganz opacity-Zeugs im CSS
              $(this).parent().find("ul.nav > li ul").css({opacity:0,visibility:'visible'})
              
              //Eventüberwachung
              $(this).parent().find("ul.nav > li").hover(function() 
                {
                  $(this).find("ul.nav2").stop().fadeTo(0,1);
                }, 
                function()
                {    
                  $(this).find("ul.nav2").stop().delay(2000).fadeTo(0,0);
                }
              );
        }); 
    });
     

  13. #13
    Avatar von spicelab
    spicelab spicelab ist offline goaspicy
    Registriert seit
    Feb 2010
    Beiträge
    1.392
    Zitat Zitat von querytail Beitrag anzeigen
    leider funktioniert das nicht.
    Zitat Zitat von spicelab Beitrag anzeigen
    Achja? Was denn?
    Zitat Zitat von querytail Beitrag anzeigen
    das Script funktioniert als solches, aber ich benötige, [...]
    Ahja, und weil Svens Script deinen Erwartungen nicht gerecht wird, und du offensichtlich nicht imstande bist, daran selbst Hand anzulegen, degradierst du es kurzer Hand als funktionsuntauglich?!

    Na, du weißt ja, wovon du hier sprichst
    Sven Mintel bedankt sich. 

  14. #14
    querytail querytail ist offline Mitglied Gold
    Registriert seit
    Jul 2010
    Beiträge
    105
    @Sven: Dankeschön. Ich habe eine nun eine Lösung mit settimeout gefunden. Das frisst merkwürdigerweise auch der IE. Liegt vielleicht auch daran, dass ich ein *****er bin.

    @spice...: Welchen Sinn haben Deine Beiträge? Sorry, ich kann zumindest bei diesem Thema keinen erkennen.
     

  15. #15
    Avatar von spicelab
    spicelab spicelab ist offline goaspicy
    Registriert seit
    Feb 2010
    Beiträge
    1.392
    Zitat Zitat von querytail Beitrag anzeigen
    @spice...: Welchen Sinn haben Deine Beiträge? Sorry, ich kann zumindest bei diesem Thema keinen erkennen.
    Wenn dir zwischenzeitlich der Sinn meiner beiden gestrigen Beiträge irgendwo unterwegs abhanden gekommen ist, und du die Spur zu ihm hier in diesem Thema nicht mehr aufnehmen kannst, sind wohl ein paar zusätzliche Trainingseinheiten angesagt, um deinen Gehirnmuskel gescheit aufzubauen, und an eine höhere Leistungsgrenze zu führen.
    Geändert von spicelab (29.08.10 um 11:57 Uhr) Grund: Tippex
     

Ähnliche Themen

  1. Div nach X Sekunden ausblenden
    Von proloser im Forum Javascript & Ajax
    Antworten: 3
    Letzter Beitrag: 06.01.10, 18:32
  2. sekunden nach Minuten und sekunden
    Von mgraf im Forum Javascript & Ajax
    Antworten: 3
    Letzter Beitrag: 23.09.08, 16:47
  3. abruch nach 30 sekunden
    Von macropode im Forum PHP
    Antworten: 1
    Letzter Beitrag: 22.08.08, 13:31
  4. Update nach x Sekunden
    Von Acriss im Forum PHP
    Antworten: 6
    Letzter Beitrag: 21.09.07, 23:37
  5. Download nach Sekunden
    Von Koose im Forum Javascript & Ajax
    Antworten: 1
    Letzter Beitrag: 10.07.02, 17:01