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


Build seven good object-oriented habits in PHP

Autor*in: Benjamin Hofmann


Technologie


Es ist zwar schon eine ganze Weile her, dass ich bei IBM über einen wirklich guten Artikel zu OOP in PHP gestoßen bin. Darin geht es um gute Gewohnheiten beim Schreiben von Code. Es geht um insgesamt sieben gute Gewohnheiten: Be modest. Be a good neighbor. Avoid looking at Medusa. Embrace the weakest link. You’re …


Beitrag lesen
19
JAN
17

Sofort und per Klick: Die neue Tourism Tech Alliance (TTA) vereinfacht den Datenaustausch für Destinationen

Autor*in: Christine Pfleger


infomax   //   Strategie & Konzeption   //   Technologie   //   Tourismus   //   Über den Tellerrand


Die Partner der Tourism Technology Alliance (TTA)
Die Partner der Tourism Technology Alliance (TTA)

Touristische Informationen einfach und plattform-übergreifend dort verfügbar machen, wo sie gebraucht werden: Dieses Ziel steht hinter dem Zusammenschluss der führenden Innovatoren im Bereich Travel Technology zur Tourism Tech Alliance (TTA). Ab sofort ist zwischen den Systemen der Partner ein Konnektor verfügbar, der einen einfachen und bedarfsgerechten Standard-Datenaustausch ermöglicht.


Beitrag lesen
21
OKT
22

Google Maps und der Wikipedia-Layer

Autor*in: Benjamin Hofmann


Technologie


Seit dem Release von Google Maps v3 gab es keinen Wikipedia-Layer mehr, den man einfach so einblenden konnte. Laut diesem Issue bei Google wird das auch nicht mehr passieren, da der Layer zu wenig genutzt wird und der Aufwand für die Integration in keiner Relation zum Nutzen steht. Jedoch wurde dort eine API von einem …


Beitrag lesen
17
JUL
12

KI gestützte Designtools

Autor*in: Carina Kruse


Technologie   //   Über den Tellerrand   //   User Experience & Design


Vor einer Weile stieß ich in einem Google Pocket Artikel auf die WebApp AutoDraw. Es erlangte meine Aufmerksamkeit dadurch, dass aus jeder Zeichnung, welche man rudimentär mit der Maus malte, das Programm ein passendes Icon generierte. Also aus den eigenen Scribbles direkt ein passendes Icon abfällt. Soweit genial, oder? Da musste ich mir direkt das …


Beitrag lesen
28
APR
22