tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
2
ZUGRIFFE
709
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Trash Trash ist offline Mitglied Brokat
    Registriert seit
    Jan 2002
    Beiträge
    400
    moin,
    ich habe aktuell 2 DIV Boxen auf meiner Seite, die dynamisch mit Content befüllt werden.

    Das Menü in der einen DIV-Box kommt aus der Datenbank und per Click auf einen der Links dort soll per JQuery etwas in dem anderen Div passieren. Da der Inhalt des Menüs dynamisch aus der DB befüllt werden, kann ich ja nicht per JQuery dynamisch Funktionen generieren lassen - je nach DB Ergebnis.

    Deswegen möchte ich definieren, dass per Click auf einen der Links im Menü ein Loader angesprochen wird, der dann je nach Selektion den Inhalt in das andere DIV lädt.

    Ich bin nun auf on() von JQuery gestoßen und dachte, dass dies mein Problem löst.

    Meine Struktur sieht folgendermaßen aus:

    Code :
    1
    2
    3
    4
    5
    6
    
    <div id="nav">
    <ul class="list_menu">
        <li><a id="link_1">blabla</a></li>
        <li><a id="link_2">blabla2</a></li>
    </ul>
    </div>

    Wenn ich nun eine Testfunktion baue, die so aussieht:

    Code :
    1
    2
    3
    
        $("#nav").on("click", function(){
                alert($(this).attr('id'));
            });

    Dann funktioniert das auch und die Alert-Box erscheint. Allerdings weiß ich jetzt nicht, was der User genau angeklickt hat. Ich dachte ich kann das hiermit ändern:

    Code :
    1
    2
    3
    
        $("#nav .list_menu a").on("click", function(){
                alert($(this).attr('id'));
            });

    Die Alert-Box erscheint aber nicht. Ich dachte, dass ich es so definieren kann, dass der Handler eben nur für die Links im Menü gelten.

    Weiß jemand wie das geht?

    Danke!
     

  2. #2
    Trash Trash ist offline Mitglied Brokat
    Registriert seit
    Jan 2002
    Beiträge
    400
    Oder liegt es daran, dass es nicht funktioniert, weil die Jquery-Funktion geladen wird und das Menü aus der DB erst "später" geladen wird? Kann man das irgendwie "umgehen"?
     

  3. #3
    CPoly CPoly ist offline Mitglied Weizenbier
    tutorials.de Premium-User
    Registriert seit
    Sep 2009
    Beiträge
    2.445
    Zitat Zitat von Trash Beitrag anzeigen
    Oder liegt es daran, dass es nicht funktioniert, weil die Jquery-Funktion geladen wird und das Menü aus der DB erst "später" geladen wird? Kann man das irgendwie "umgehen"?
    Genau daran liegt es, weil der Selektor wählt die Elemente ja einmalig aus. Aber on() hat auch hier eine Lösung für dich.

    Code javascript:
    1
    2
    3
    
    $("#nav").on("click", ".list_menu a", function(){
        alert(this.id);
    });

    Oder für jQuery vor 1.7

    Code javascript:
    1
    2
    3
    
    $("#nav").delegate(".list_menu a", "click", function(){
        alert(this.id);
    });
     

Ähnliche Themen

  1. Antworten: 13
    Letzter Beitrag: 13.10.10, 19:51
  2. C - Funktion in einer Funktion benutzen
    Von guiller im Forum C/C++
    Antworten: 2
    Letzter Beitrag: 07.04.08, 20:39
  3. Variable ausserhalb der Funktion benutzen
    Von Sotares im Forum Javascript & Ajax
    Antworten: 1
    Letzter Beitrag: 17.03.07, 13:14
  4. malloc/realloc richtig benutzen
    Von janosch im Forum C/C++
    Antworten: 1
    Letzter Beitrag: 20.12.05, 21:08
  5. Klasse in Funktion benutzen ?
    Von Trash im Forum PHP
    Antworten: 4
    Letzter Beitrag: 21.12.04, 16:01