Google Maps infowindow.setContent als DOM-Element mit jQuery scheint nur einmal funktioniert?

8

Ich bin sehr frustriert und hoffe, dass hier jemand helfen kann. Ich habe eine Karten-App, wo es mehrere Markierungen auf den Karten mit InfoWindows gibt, deren Inhalt regelmäßig aktualisiert wird. Meine Lösung war, die divs, die in das infoWindow im DOM gehen, in einem versteckten Container zu platzieren, der von meinem Updater-Code im Hintergrund aktualisiert werden kann. Dann benutze ich ein einzelnes infoWindow und setze den Inhalt mit Hilfe von query auf das DOM-Element:

%Vor%

Das Ding funktioniert großartig ... einmal. Dann wird es für diesen Hersteller nicht wieder geöffnet. Ich habe bemerkt, dass, wenn ich das Fenster auf einen Marker (Marker A) öffne und es dann schließe und es dann auf einem anderen Hersteller (Marker B) öffne, und dann zurück zum Marker A gehe, erscheint das Fenster neben Marker A , aber mit Inhalt von Marker B.

Warum wird mein Skript den Inhalt nicht ein zweites Mal auf das DOM-Element setzen? Es ist fast so, als würde der jQuery-Selektor das Element aus dem DOM löschen.

Prost,

whiteatom

Hallo nochmal,

Stellt sich heraus, dass ich meine eigene Frage beantwortet habe, als ich versuchte, es hier zu erklären.

Das Übergeben eines DOM-Elements an die setContent () - Funktion scheint es tatsächlich aus dem DOM zu entfernen und es in das infoWindow zu stellen, so dass es das nächste Mal, wenn ich es versuche, nicht mehr da ist. Mein Problem war, einen Klon () zum jQuery-Aufruf hinzuzufügen, und es scheint jetzt zu funktionieren.

%Vor%

Kann jemand bestätigen, dass dies das Verhalten des setContent ist, wenn ein DOM-Element an es übergeben wird? Ist das der beste Weg, damit umzugehen?

Prost,

whiteatom

    
whiteatom 14.03.2012, 17:10
quelle

2 Antworten

6

Wenn Sie das Elternelement eines Elements im DOM ändern, wird das Element verschoben, nicht kopiert.

Also würde ich diese Zeile annehmen ...

%Vor%

Würde das Element "# id-window-content" von seiner ursprünglichen Position entfernen.

Wenn das infoWindow geschlossen ist, wird das darin enthaltene DOM-Element verworfen.

Wenn Sie also zum zweiten Mal auf einen Marker klicken, ist das Element nicht mehr vorhanden.

Versuchen Sie, das Element zu klonen oder eine HTML-Zeichenfolge an das InfoWindow zu senden.

Hoffe, das hilft

    
Mike Gleason jr Couturier 14.03.2012, 17:17
quelle
2

Es wurde sogar komplizierter, weil ich Tabs (mit jQuery Tools) in den infoWindows hatte und ein Klon (selbst mit einer tiefen Kopie von Ereignissen und Daten - klonen (true, true)) nicht wollte, dass er sie übertrug ... die Tabs waren im infoWindow tot.

Also .. Ich verschiebe das Div wie ich ursprünglich war und verschiebe es dann zurück, bevor ich den neuen infoWindow Inhalt hinzufüge:

%Vor%

Ich denke, das hat auch den Vorteil, dass mein Updater-Skript nur das # "+ id +" - Fensterinhalt-div aktualisiert und sogar das infoWindow während des Öffnens aktualisiert:)

Danke für Ihre Hilfe ...

    
whiteatom 14.03.2012 21:52
quelle