Categories: Technologie

jQuery(document).unbind() löscht alle entsprechenden live event handler

Beim Deployment des Bremen Portals ist mir heute eine Eigenheit von jQuery aufgefallen, der ich mir bisher nicht bewusst war.

Auf der Startseite werden im Keyvisual kleine Teaserfenster bei Mouseover über so rote Infobubbles geöffnet. Die BTZ hatte sich nun gewünscht, dass diese Infofenster wieder geschlossen werden, sobald der User irgendwo außerhalb des Fensters klickt.

Gelöst habe ich dies, in dem ich ein jQuery(document).bind(‚click‘, function(e){ … }) aufrufe, sobald ein Fenster geöffnet wird. Damit dieser Eventhandler nicht bei jedem sich neu öffnenden Fenster erneut auf document angelegt wird (was zur Folge hätte das die definierte Funktion mehrfach ausgeführt würde), habe ich innerhalb der aufgerufenen Funktion noch ein jQuery(document).unbind(‚click‘) ergänzt.

Das hat auch super funktioniert und man könnte meinen das war es dann auch. Nach dem Deployment fiel mir auf, das sich auf einmal die große Karte nicht mehr öffnen ließ. Diese wird mittels Live Event auf einem Link geöffnet, also etwas in der Art: jQuery(‚.mapOpener‘).live(‚click‘, function() {}). Das hat bisher auch immer geklappt, erst nach diesem Deployment ging es nicht mehr.

Nach etwas Nachforschen habe ich herausgefunden, dass ein unbind auf jQuery(document) alle entsprechenden live Events löscht, welche auf der gleichen Seite irgendwo registriert wurden. Scheinbar legt jQuery diese Live Events im Hintergrund, als normale Events auf document ab. Eine Art Workaround, um live Events in JavaScript zum funktionieren zu bringen.

Dies wurde auch schon von der jQuery Crew diskutiert (http://bugs.jquery.com/ticket/7520) und man kam überein, dass dies das korrekte Verhalten ist. Es wird also keinen Patch geben, der dieses Problem behebt.

Also immer schön aufpassen wann ihr ein unbind auf document ausführt.

Axel Güldner

Creative Director bei infomax am Standort Bremen

Share
Published by
Axel Güldner

Recent Posts

Die W-JAX 2024: Ein Fest für Architekten, Coder und die, die es werden wollen*

Von Marc & Willi – powered by Nostalgie, Nerd-Kultur und einer Prise ChatGPT Die W-JAX…

1 Tag ago

Workshop-Bericht „AI-driven Software-Development mit GPT und Co.“

Anfang November konnte ich an der W-JAX 2024 in München teilnehmen, einer der führenden Entwicklerkonferenzen…

2 Tagen ago

Java-Orbit 2024

Der Hype der vergangenen Jahre rund um AI lässt spürbar nach, die immer noch verhältnismässig…

3 Tagen ago

Skift Global Forum 2024 in New York

Skift kennen vermutlich viele Akteure im Tourismus als eines der führenden Newsportale und Marktforschungsunternehmen mit…

2 Monaten ago

imx.Platform News: Veranstaltungsmodul, KML- Download, Referenz- und Stammliste

Neu in der imx.Platform: das Veranstaltungsmodul im Partner Client ist verfügbar. Eine Tour lässt sich…

3 Monaten ago

WeAreDevelopers World Congress 2024

Im Juli waren wir (Benni und Florian) auf dem WeAreDevelopers World Congress. 15.000 Verrückte, die…

4 Monaten ago