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


Dev- Ops Camp Nürnberg

Autor*in: Sascha Nützel


Technologie


Nachdem ich ohnehin einen Teil meiner Wochenenden in Nürnberg verbringe, war ein Besuch des Dev- Ops Camp Nürnberg naheliegend. Das Camp war als „Unkonferenz“ organisiert, sodass Ablauf und Themen direkt vor Ort festgelegt wurden. Leider hatte ich an diesem Tag mehr als einmal die Qual der Wahl, da jeweils 4 Sessions gleichzeitig stattfanden. Da eigens …


Beitrag lesen
14
NOV
16

Follow-up zu Vortrag beim imx.Camp – „Technologie-Umstellung bei Twitter“

Autor*in:


Technologie


Wie mir gerade bewusst wird, muss ich eine Aussage aus meinem Vortrag beim imx.Camp korrigieren: Twitter ist nicht bei der US-Präsidentschaftswahl im Jahre 2008 in weiten Teilen von Ruby auf Scala (Java Virtual Machine) umgestiegen, sondern erst während der US-Wahlen im Jahre 2012. Wen’s interessiert, der kann die Hintergründe hier nachlesen: Twitter’s Shift from Ruby …


Beitrag lesen
22
OKT
15

Webbrowser

Autor*in: Sascha Nützel


Technologie // User Experience & Design


Bei meinen Streifzügen durch das „Neuland“ bin ich auf einen neuen Browser gestoßen: Blisk – dieser basiert auf Chromium und hält für uns Entwickler/Designer ein paar nette Features bereit (teils in näherer Zukunft). gleichzeitig Desktop / Mobile überprüfen Auto- Refresh nach Source- Change Analytics (JS Fehler, Pagespeed, Browser Kompatibilität) Screenshots Der erste Eindruck, auch ohne Beta- Features, …


Beitrag lesen
26
SEP
16