tutorials.de Buch-Aktion 05/2012
Like Tree1Danke
  • 1 Beitrag von Maik20
ERLEDIGT
NEIN
ANTWORTEN
5
ZUGRIFFE
246
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Maik20 Maik20 ist offline Mitglied Gold
    Registriert seit
    Oct 2007
    Beiträge
    214
    Hallo,

    ich bastel gerade etwas mit jquery herum. Komme aber nicht so recht weiter. Vielleicht kann mir hier jemand helfen?

    Mit folgendem Code:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    
    $(document).ready(function(){
        $("#menu ul.nav li a#myAccount").click(function() {
            // ul#myOptions is the hidden list
            $("#menu ul.nav ul#myAccountMenu").toggle();
            $(this).toggleClass("active");
            return false;
        });
    });

    Öffne ich ein Menu beim click auf den link <li><a href="#" id="myAccount">Account</a></li> ein Menü. Nun müsste ich für jeden li Punkt den obigen Code wiederholen, wenn ich z.B. weitere Menüs einbinden möchte. Wie kann ich den Code so ändern, dass bei einem
    Klick auf:
    Code :
    1
    
    $("#menu ul.nav li a#XXX").click(function() {
    Immer das Menü:
    Code :
    1
    
    $("#menu ul.nav ul#XXXMenu").toggle();
    geöffnet wird.

    Hat dazu jemand eine Idee?. Sonst müsste ich für 10 Menüpunkte den Javascript code erstellen. Das wäre die weniger elegante Lösung.
     

  2. #2
    Avatar von rd4eva
    rd4eva rd4eva ist offline Mitglied Brillant
    Registriert seit
    Feb 2003
    Beiträge
    756
    Ich glaube du solltest dir die Selektoren bzw. deren Funktionweise nochmal zu gemüte führen. Das wirkt alles nicht so als hättest du es verstanden.
    Binde den click-Handler ganz einfach an mehrere Elemente. Dann liest du die id des jeweils angeklickten Elements aus und setzt sie als Variable im Selektor der toggle Funktion ein.
     
    In order to understand recursion, one must first understand recursion.

  3. #3
    Maik20 Maik20 ist offline Mitglied Gold
    Registriert seit
    Oct 2007
    Beiträge
    214
    Danke,

    da hast du wohl recht. Die Selektoren hatte ich wirklich noch nicht richtig verstanden. Nachdem ich mir die Doku noch einmal näher angesehen habe, würde ich nun folgendes machen:

    Ich verpasse allen Menüpunkten die Klasse "myMenu" und kann dann über den Class-Selektor auf die Klasse zugreifen etwa so:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    <li class="myMenu" id="id1"><a href="">Menu1</a></li>
    <li class="myMenu" id="id2"><a href="">Menu2</a></li>
    <script>
    $(document).ready(function(){
        $(".myMenu").click(function() {
            ****?
            return false;
        });
    }); 
    </script>

    Sag mir bitte ob das soweit richtig ist.

    Nur wie komme ich jetzt an die id des geklickten Menüpunkts um diese zu übergeben?
    spicelab bedankt sich. 

  4. #4
    CPoly CPoly ist gerade online Mitglied Weizenbier
    tutorials.de Premium-User
    Registriert seit
    Sep 2009
    Beiträge
    2.445
    Die Selektoren haben nicht unbedingt etwas mit der jQuery Dokumentation zu tun oder überhaupt mit JavaScript. Du solltest dich unbedingt mit CSS genauer auseinandersetzen, denn dann fällt es dir viel leichter z.B. mit jQuery die Elemente auszuwählen, welche du suchst. Aber das hat rd4eva ja bereits gesagt.

    Um deine Frage zu beantworten:

    Code javascript:
    1
    2
    3
    
    ****?
    //ersetzen durch
    alert(this.id);

    Aber du hättest nicht jedem Element die Klasse zuweisen müssen (Das widerspricht dem Ziel, dass man mit jQuery und anderen Frameworks verfolgt: http://en.wikipedia.org/wiki/Unobtrusive_JavaScript). Das wirst du sicher merken, nach dem du dich mit CSS oder zumindest CSS-Selektoren beschäftigt hast.
     

  5. #5
    Maik20 Maik20 ist offline Mitglied Gold
    Registriert seit
    Oct 2007
    Beiträge
    214
    Danke für den Tip.

    Hast du für mich ggf. einen guten Link bzgl. der Selektoren auf Deutsch?

    Ich habe in JQuery mehrere Möglichkeiten z.B. wie hier ein click Event zuzuweisen.
    1) Über die ID
    Da die ID einzigartig ist, würde dies bedeuten ich müsste die JQuery Funktion für jede ID einzeln schreiben
    2) Über einen Pfad z.B. ul.topnav > li ...
    Dann müsste ich bei der Änderung des HTML Codes immer die JavaScript-Funktion anpassen. Wenn z.B. die Topnav keine Aufzählung mehr ist.
    3) Über die Klassen.

    Letzteres fand ich am flexibelsten. Ich lasse mich aber gerne eines besseren belehren, daher würde ich mich über einen guten Link freuen.
     

  6. #6
    CPoly CPoly ist gerade online Mitglied Weizenbier
    tutorials.de Premium-User
    Registriert seit
    Sep 2009
    Beiträge
    2.445
    Ich hab leider keinen Link parat.

    Ich verstehe deine Überlegung bei Punkt 2) nicht ganz. Wie oft änderst du denn dein HTML? Und selbst wenn du es ständig ändern würdest, wäre es doch einfacher einen einzigen Selektor zu ändern (z.B. aus "li" wird "div") anstatt eine Klasse einzuführen, die einzig den Zweck erfüllt, sie via JavaScript anzusprechen. Diese müsstest du jedes mal dazu schreiben, was deinen Quelltext unnötig aufbläht. Das kann auch durchaus mal Sinn machen, aber in einem Fall denke ich eher nicht.

    So in etwa würde ich das aus deinem Startpost umsetzen, sofern ich die Anforderung richtig verstanden habe.

    Code javascript:
    1
    2
    3
    
    $("#menu a").click(function() {
        $(this).parent("ul").toggle();
    }

    Aber so 100% Sinn macht es noch nicht. Du müsstest vielleicht mal mehr als diese eine Zeile HTML preis geben.
     

Ähnliche Themen

  1. Frage zu JQuery $.get
    Von RipmaV im Forum Javascript & Ajax
    Antworten: 8
    Letzter Beitrag: 10.09.10, 12:41
  2. [jQuery] Selector Frage
    Von Microhome im Forum Javascript & Ajax
    Antworten: 0
    Letzter Beitrag: 12.07.10, 18:33
  3. JQuery Frage beim Toggeln
    Von Oetzicool im Forum Javascript & Ajax
    Antworten: 2
    Letzter Beitrag: 28.01.10, 23:49
  4. Frage zu jQuery toggle effekt
    Von louS im Forum Javascript & Ajax
    Antworten: 5
    Letzter Beitrag: 03.10.09, 17:28
  5. jQuery - Frage zu Lizenz
    Von AtotheZ im Forum Javascript & Ajax
    Antworten: 1
    Letzter Beitrag: 26.01.09, 06:02