tutorials.de Buch-Aktion 02/2012
Like Tree1Danke
  • 1 Beitrag von Quaese
ERLEDIGT
NEIN
ANTWORTEN
4
ZUGRIFFE
288
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Mikelop Mikelop ist offline Mitglied
    Registriert seit
    Aug 2010
    Beiträge
    12
    Hallo, ich denke ich habe eine einfache Frage, für die ich leider keine Lösung finde.

    Ich verwende ein JQuery Menü aus dem Internet, bei dem es 3 Grafiken gibt:

    Default, Hover und Aktiv.

    Soweit so gut. Hat auch alles prima geklappt, nur leider sollte die Hovergrafik nicht geladen werden, wenn der betreffende Menüpunkt gerade ausgewählt (aktiv) ist.

    Hier mal der HTML- und Jquery-Code:

    HTML-Code:
    <ul id="nav">  
    <li class="test1"><a href="test.php?go=test1"></a><div class="hover"></div></li>
    <li class="test2"><a href="test.php?go=test2"></a><div class="hover"></div></li>
    <li class="test3"><a href="test.php?go=test3"></a><div class="hover"></div></li>
    <li class="test4"><a href="test.php?go=test4"></a><div class="hover"></div></li>
    <li class="test5"><a href="test.php?go=test5"></a><div class="hover"></div></li>
    </ul>
    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
    
        $('li').hover(
            
            //Mouseover, fadeIn the hidden hover class  
            function() {
        
                $(this)
                .children('div')
                .stop(true, true)
                .css('filter', 'alpha(opacity=40)')
                .fadeIn('1000');
            }, 
        
            //Mouseout, fadeOut the hover class
            function() {        
                
                $(this)
                .children('div')
                .stop(true, true)
                .css('filter', 'alpha(opacity=40)')
                .fadeOut('1000');   
            
        }).click (function () {
        
            //Add selected class if user clicked on it
            $(this)
            .addClass('current_page_item')
            .siblings('#nav li')
            .removeClass('current_page_item');
        });

    Wie schaffe ich es das der Hove-Effekt, also das fadein und fadeout der Hovergrafik bei einem aktivierten Menüpunkt nicht stattfindet?

    Habe es schon mit If probiert:

    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
    
        $('li').hover(
            
            //Mouseover, fadeIn the hidden hover class  
            function() {
              if (Class != 'current_page_item') {
        
                $(this)
                .children('div')
                .stop(true, true)
                .css('filter', 'alpha(opacity=40)')
                .fadeIn('1000');
            }
            }, 
        
            //Mouseout, fadeOut the hover class
            function() {        
                
                $(this)
                .children('div')
                .stop(true, true)
                .css('filter', 'alpha(opacity=40)')
                .fadeOut('1000');   
            
        }).click (function () {
        
            //Add selected class if user clicked on it
            $(this)
            .addClass('current_page_item')
            .siblings('#nav li')
            .removeClass('current_page_item');
        });

    Funktionierte aber nicht. Bin noch recht am Anfang mit der Javascript-Area...

    Wahrscheinlich ist es ganz einfach. Dachte so ne Abfrage, wenn die Class aktiv ist, dass dann kein Hover ausgeführt wird.

    Danke für eure Hilfe!
     

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

    dein Ansatz sieht doch schon sehr vielversprechend aus. Versuch es mal mit der Methode hasClass.
    Code :
    1
    2
    3
    4
    5
    6
    7
    
    if(!$(this).hasClass('current_page_item')){
      $(this)
      .children('div')
      .stop(true, true)
      .css('filter', 'alpha(opacity=40)')
      .fadeIn('1000');
    }
    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
    Mikelop Mikelop ist offline Mitglied
    Registriert seit
    Aug 2010
    Beiträge
    12
    Ja super, funktioniert. Danke!

    Jetzt ist aber ein weiteres Problem sichtbar. Klicke ich einen Menüpunkt an, bleibt der Hover-Effekt dem Aktiven Menüpunkt überlagert, bis ich mit der Maus vom dem Punkt weggeh, dann setzt der FadeOut-Effekt ein.

    Besser wäre es, sobald man auf den Menüpunkt klickt, also die Class ändert, dass das Hoverbild nicht gefadet wird sondern sofort ausgeblendet wird. ( .hide ?)

    Hier mal mein geänderter Code:
    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
    
        $('li').hover(
            //Mouseover, fadeIn the hidden hover class  
            function() {
                if(!$(this).hasClass('current_page_item')){
                  $(this)
                  .children('div')
                  .stop(true, true)
                  .css('filter', 'alpha(opacity=40)')
                  .fadeIn('1000');
                }
            }, 
            //Mouseout, fadeOut the hover class
            function() {            
                  $(this)
                  .children('div')
                  .stop(true, true)
                  .css('filter', 'alpha(opacity=40)')
                  .fadeOut('1000');     
        }).click (function () {
            //Add selected class if user clicked on it
            $(this)
            .addClass('current_page_item')
            .siblings('#nav li')
            .removeClass('current_page_item');
        });

    Braucht ihr einen Link zu der Seite?
     

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

    versteckt das hover-Bild, wie bereits von dir vermutet, mit der hide-Methode im click-Event.
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    
    $('li').hover(
      //Mouseover, fadeIn the hidden hover class
      function() {
        // ...
      },
     
      //Mouseout, fadeOut the hover class
      function() {
        // ...
      }).click (function () {
        //Add selected class if user clicked on it
        $(this)
        .addClass('current_page_item')
        .siblings('#nav li')
        .removeClass('current_page_item');
     
        $(this).children('div').stop(true, true).hide();
    });
    Ciao
    Quaese
    Mikelop bedankt sich. 
    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

  5. #5
    Mikelop Mikelop ist offline Mitglied
    Registriert seit
    Aug 2010
    Beiträge
    12
    Wunderbar! Wunschlosglücklich.

    Super schnelle und perfekte Hilfe! Danke
     

Ähnliche Themen

  1. Antworten: 3
    Letzter Beitrag: 20.10.10, 20:47
  2. Antworten: 9
    Letzter Beitrag: 22.07.10, 15:51
  3. Antworten: 3
    Letzter Beitrag: 12.07.10, 13:27
  4. jQuery noConflict Mode & jQuery Plugins?
    Von josDesign im Forum Javascript & Ajax
    Antworten: 6
    Letzter Beitrag: 27.05.10, 22:10
  5. jQuery: jQuery auf AJAX Response anwenden
    Von pointsdächster im Forum Javascript & Ajax
    Antworten: 3
    Letzter Beitrag: 12.04.10, 01:15