Liebe jQuery-Kundige,
um meine Aufklapp-Navi im Browser cache-bar zu machen, habe ich diese in ein JSON-Objekt geschmissen, das von einem JavaScript per JSON-Ajax nachgeladen wird. Ja, die Seite ist auch ohne JavaScript oder Maus voll benutzbar - man braucht eben mehr Klicks/Taps und Seitenaufrufe bzw. benutzt die Suchfunktion.
Bei verschachtelten Menüs klappt das Aufklappen desselben Unterpunktes nicht mehrfach nacheinander, sondern nur dann, wenn inzwischen ein anderer Unterpunkt aufgeklappt wurde.
Debug-Ausgaben haben ergeben, dass wohl das "mousemove"-Event nach dem Entfernen des notwendigen <ul> für das Untermenü den Link als solchen nicht mehr "findet". Warum das so ist, verstehe ich nicht.
Die Navigation sieht im Wesentlichen (mit JavaScript-Manipulation) so aus:
<nav>
<div id="hover-navigation"></div>
<article>
<h2>Navigation</h2>
<ul><li><a href="...">...</li>...</ul>
</article>
<!-- kann fehlen: -->
<article>
<h2>Unterseiten</h2>
<ul><li><a href="...">...</li>...</ul>
</article>
</nav>
Für die in der fest auf der Seite vorhandenen Navi-Links verwende ich diese Prüfung:
el.is("body > nav > article a[href]")
Für Links innerhalb des Hover-Menüs verwende ich diesen:
el.is("#hover-navigation a[href]")
Wenn nun also ein Aufklapp-Menü innerhalb des Hover-Menüs erscheint, dann ändert sich das DOM beispielsweise so:
<div id="hover-navigation">
<ul>
<li>
<a href="was/austausch">Austausch</a>
<!-- Untermenü -->
<ul><li><a href="...">...</a></li>...</ul>
</li>
</ul>
</div>
Nach Entfernen des verschachtelten <ul> bewirkt ein Hovern über dem "Austausch"-Link kein Feuern des mousemove-Events. Der Selektor "#hover-navigation a[href]" müsste aber doch nach wie vor greifen, da sich sonst am DOM nichts verändert hat, oder verstehe ich das falsch?
Weiß jemand Rat?
Liebe Grüße,
Felix Riesterer.
"Wäre die EU ein Staat, der die Aufnahme in die EU beantragen würde, müsste der Antrag zurückgewiesen werden - aus Mangel an demokratischer Substanz." (Martin Schulz, Präsident des EU-Parlamentes)