Jquery - Aktion auf Elternelement

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Jquery - Aktion auf Elternelement

    Hi Gemeinde,

    ich habe folgendes Problem, und zwar versuche ich bei meiner Navi (Ober- und Unternavigation. Nun Möchte ich beim Klicken auf die Obernavigation etwas ausführen lassen. es handelt sich um ein <li>. Das Problem ist, dass die Unternavi auch aus <li> besteht.
    Ich will dass NUR beim Klicken auf das <li> der Obernavigation eine Aktion ausgeführt wird und nicht beim Unterelement.

    Hier mein HTML:
    HTML-Code:
    <ul id="navbar">        
            <li><a href="#"><span class="icon_text users"></span>Adressbuch</a>
                <ul style="position: absolute; top: 95px; left: 21px; display:none">
                    <li><a class="subbutton"><span class="icon_text"></span>kunden</a></li>
                    <li><a class="subbutton"><span class="icon_text"></span>mitarbeiter</a></li>
                </ul>
            </li>
            <li><a href="#"><span class="icon_text"></span>Produkte</a></li>
            <li><a href="#"><span class="icon_text"></span>Widgets</a>
                <ul style="position: absolute; top: 95px; left: 21px; display:none">
                    <li><a class="subbutton"><span class="icon_text"></span>Rechner</a></li>
                    <li><a class="subbutton"><span class="icon_text"></span>Notiz</a></li>
                    <li><a class="subbutton"><span class="icon_text"></span>Kalender</a></li>
                </ul>
            </li>
            <li><a href="#"><span class="icon_text comment"></span>Notizen</a></li>        
            <li><a href="#"><span class="icon_text stats"></span>Statistiken</a></li>
    </ul>
    mein JS:

    Code:
    $("#navbar li").click(function(){
                /*if( $(this).children().is(".subnavi") == true )*/
                if( $(this).children().is('ul .subnavi') == true )
                {
                    $('#navbar li ul').fadeOut(300);
                    $(this).find("ul").fadeIn(500);
                    $("#navbar li").removeClass('active');
                    $(this).addClass('active');
                    return false;
                }
    });
    Ich habe es über den Ansatz versucht zu Prüfen ob eine Unternavigation vorhanden ist. Problem: Beim klicken auf ein Unterelement wird die Funktion 2x aufgerufen. Einmal für die Unternavigation und einmal für die Obernavigation.

    Hoffe das ist soweit verständlich.

  • #2
    Hallo,

    Child Selector (“parent > child”) – jQuery API

    Also "#navbar>li".

    Gruß,

    Amica
    [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
    Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
    Super, danke!
    [/COLOR]

    Kommentar


    • #3
      Super danke, ich hatte den Selektor auch schon gesehen, Instinktiv habe ich aber gedacht dass er dann ALLE Kindelemente er nimmt .... hätte ich es doch ausprobieren sollen ...

      Eins gibt es dann noch:
      Wenn eine Obergruppe keine Untergruppen hat soll der Link aktiviert werden.

      Wenn ich die Funktion children() nehme kann ich das nicht für eine if Anweisung nutzen. Gibt es eine andere Funktion mit der ich prüfen kann ob es ein Unterelement in Form von <ul><li> gibt ?

      EDIT:

      Leider funktionier das mit dem Selektor nicht wie gewünscht. Die Funktion wird immernoch ausgeführt, wenn ich sowohl auf das Oberelement <li> als auch auf das verschachtelte <li> klicke.
      Zuletzt geändert von Fireclave; 05.04.2011, 15:05.

      Kommentar

      Lädt...
      X