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

Datum: 24. Januar 2012
Autor*in: Axel Güldner


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.


Dieser Artikel wurde verschlagwortet unter:


Kommentare

Selber kommentieren:






Weitere Beiträge zum Thema Technologie


imx.Platform Lab 2025 – inspirierend und interaktiv

Autor*in: Lorena Meyer


infomax   //   Strategie & Konzeption   //   Technologie   //   Tourismus   //   User Experience & Design


In der ersten Aprilhälfte fand erneut unser alljährliches Anwenderforum aka imx.Platform Lab statt. An zwei Terminen und Locations – dieses Jahr in Grassau und Berlin – konnten Anwender*innen und Interessent*innen der Content- und Serviceplattform imx.Platform sich über Neuerungen und Entwicklungen informieren, Wissen und Best Practices austauschen und gemeinsam Ideen für neue Features entwickeln. Der Vormittag …


Beitrag lesen
17
APR
25

video.js – HTML5-Video-Kmponente mit Polyfill für alte Browser

Autor*in: Stefan Oswald


Projekte // Technologie // User Experience & Design


Webseite: http://www.videojs.com/ Ich habe es mir noch nicht im Detail angeschaut, aber rein von der Beschreibung her könnte das für uns mal ganz nützlich sein. Man kann per API auch Loader für eigene Video-Provider umsetzen. Kostenlos einsetzbar dank Apache 2.0 Lizenz.


Beitrag lesen
14
MAI
13

Browser Diet

Autor*in: Benjamin Hofmann


Technologie


Eben bin ich über t3n auf eine interessante Website gestoßen: Browser Diet. Hier geht es darum, wie der Name bereits vermuten lässt, wie man Websites im Browser beschleunigen kann. Einiges davon machen wir bereits seit einiger Zeit, einiges nicht. Ein paar Beispiele dafür sind folgende Punkte: http://browserdiet.com/#cache-array-lengths Ein viel gemachter Fehler, auch in PHP, da …


Beitrag lesen
27
MRZ
13

Open Graph Tags in der imx.Library

Autor*in: Bastian Schwarz


Technologie


Soeben habe ich eine neue Version des MetainfoGenerators bereitgestellt, der einen Builder und einen Renderer für die Open Graph Tags beinhaltet. Die Logiken zur Einbindung sind nicht im „Mock“-Smartyplugin enthalten, da die Logik sich von Portal zu Portal unterscheiden kann. Wicht dafür ist, dass die Open Graph Tags mind. aus title, image, url und type …


Beitrag lesen
04
SEP
12