Enrico: jQuery: each begrenzen

Hallo,

ich habe folgende Menüstruktur:

  
   <ul>  
      <li class="RubrikOben"></li>  
      <li class="RubrikMitte">Warenkorb</li>  
      <li class="RubrikUnten"></li>  
      <li class="AbgelegteArtikel">Leer</li>  
      <li class="RubrikAbschluss"></li>  
      <li class="RubrikOben"></li>  
      <li class="RubrikMitte">Menü</li>  
      <li class="RubrikUnten"></li>  
      <li>  
+->      <ul>  
| [H]       <li>Startseite</li>  
| [H]       <li>Wir über uns  
|              <ul>  
| [U]             <li>Wir über uns</li>  
| [U]             <li>Termine</li>  
| [U]             <li>Fotos</li>  
|              </ul>  
|           </li>  
| [H]       <li>Rüstzeug  
|              <ul>  
|                 ...  
|              </ul>  
|           </li>  
|           ...  
+->      </ul>  
      </li>  
   </ul>  

Der eingefasste Bereich beinhaltet das eigentliche Menü.

Was macht mehr Sinn?

IDs für spätere Aktionen hart im html-Code einzugeben (<li id="H1">Startseite</li>) oder über jQuery zuordnen zu lassen?

Mir geht es darum, die mit [H] gekennzeichneten Menüpunkte als Hauptmenüpunkte zu kennzeichnen und die mit [U] gekennzeichneten Menüpunkte als Untermenüpunkte, damit ich später mit diesen IDs arbeiten kann.

Wenn es mehr Sinn macht, dies über jQuery zu bewerkstelligen, da eben weniger übertragen werden muss, dann hänge ich an diesem Vorhaben.

Mein jetziger Ansatz sieht folgendermaßen aus:

  
$("ul li ul li:not(ul)").each(function(i)  
{  
   $(this).attr("id", "H" + (i + 1));  
});  

Hier werden aber alle li-Elemente durchlaufen, auch die weiterer Listen, und nicht, wie eigentlich beabsichtigt, nur die Ebene "ul li ul li" ohne gegebenenfalls weitere Listen.

Was meint ihr?

Wie kann ich die Schleife auf die gewünschte Ebene begrenzen?

Gruß,
Enrico

  1. Hallo!

    Wie kann ich die Schleife auf die gewünschte Ebene begrenzen?

    Siehe Child Selector

    Gruß Gunther

  2. Om nah hoo pez nyeetz, Enrico!

    Was macht mehr Sinn?

    IDs für spätere Aktionen hart im html-Code einzugeben (<li id="H1">Startseite</li>) oder über jQuery zuordnen zu lassen?

    Mir geht es darum, die mit [H] gekennzeichneten Menüpunkte als Hauptmenüpunkte zu kennzeichnen und die mit [U] gekennzeichneten Menüpunkte als Untermenüpunkte, damit ich später mit diesen IDs arbeiten kann.

    weder noch: Deine Listenelemente sind doch schon durch ihren Platz im DOM gekennzeichnet.

    Es gibt noch mehr Kombinatoren als den Nachfahrenselektor.

    Warum meinst du, IDs benötigen zu müssen? Sollte ein Menüpunkt nicht einen Verweis enthalten, der zu einer anderen Seite führt? Falls du tatsächlich dein Menü mit JavaScript aufbauen möchtest: Das ist eine schlechte Idee.

    Matthias

    --
    Der Unterschied zwischen Java und JavaScript ist größer als der zwischen Gut und Guttenberg.