Felix Riesterer: jQuery - mousemove feuert nach DOM-Manipulation nicht mehr

Beitrag lesen

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.

[Live-Beispiel]

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)