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


Neues vom IE, Spartan Browser und Facebook Video

Autor*in: Benjamin Hofmann


Technologie


Der Spartan-Browser kommt ja so langsam ins Rollen, also gibt’s Neuigkeiten, was das für den IE bedeuten wird: „Gerüchte über das Ende des Internet Explorer sind stark übertrieben“, hält Microsoft zwar dagegen. Tatsächlich erneuerte dieser Post aber nur das Bekenntnis, den Internet Explorer für Firmenkunden am Leben zu erhalten“ Microsoft arbeitet seit einiger Zeit mit …


Beitrag lesen
26
MRZ
15

Caching – Probleme mit Permissions

Autor*in: Florian Müller


Technologie


Ich war gerade an einem Ticket um eine Lösung für das leidige Thema des Caching der Autosuggest zu lösen. Das grundlegende Problem ist, dass das Autosuggest recht umfangreich ist (gecached bis zu 2MB). Sollte nun ein User ein Wort eingeben und kein Autosuggest vorhanden sein, wurde dieser gebaut und gecached. Die hat auch mal gerne eine …


Beitrag lesen
13
JAN
17

Flickr und das Image Plugin oder „Dees is sowieso blääd“

Autor*in: Bastian Schwarz


Technologie


Gerade habe ich ein Problem für unser Kundenprojekt „Holsteinische Schweiz“ analysiert: Im Keyvisual wurden bis zu 20 Flickr-Bilder geladen. Die URLs der Bilder wurden über die Flickr API geholt und dann durch das Image Plugin geladen, entsprechend gerechnet und abgelegt. So weit, so gut. Nun das Problem: Für den Dateinamenhash benutzt ajaxImage u.a. die Breite …


Beitrag lesen
21
SEP
11