Ich hatte das gleiche Problem, und hoffentlich Google bietet schließlich ein offizielles Mittel zur Aufräumung, aber im Moment konnte ich das Problem lösen, indem Sie manuell das pac-container-Objekt entfernen, eine Referenz, die in der gefunden werden kann Automatische Vervollständigung Klasse zurückgegeben von:
autocomplete.gm_accessors_.place.Mc.gm_accessors_.input.Mc.L
Was ich einfach aus dem DOM in meinem Widget destructor entfernt:
var autocomplete = new google.maps.places.Autocomplete(element, options);
der Verweis auf das pac-Container-Element finden Sie unter
$(autocomplete.gm_accessors_.place.Mc.gm_accessors_.input.Mc.L).remove();
Hoffe das hilft.
aktualisieren
Ich bin nicht sicher, wie Googles Verschleierungs funktioniert, aber Teile der oben scheinen verschleiert, und scheitern wird offensichtlich, wenn die Verschleierung oder inneren Strukturen des API ändern. Sie können nicht viel über Letzteres tun, aber für Ersteres könnten Sie zumindest die Objekteigenschaften nach erwarteten Kriterien durchsuchen. Wie wir sehen können, sind einige der Eigenschaftsnamen nicht verschleiert, während einige wie "Mc" und "L" zu sein scheinen. Um dies etwas robuster, schrieb ich den folgenden Code:
var obj = autocomplete.gm_accessors_.place;
$.each(Object.keys(obj), function(i, key) {
if(typeof(obj[key]) == "object" && obj[key].hasOwnProperty("gm_accessors_")) {
obj = obj[key].gm_accessors_.input[key];
return false;
}
});
$.each(Object.keys(obj), function(i, key) {
if($(obj[key]).hasClass("pac-container")) {
obj = obj[key];
return false;
}
});
$(obj).remove();
Der Code die allgemeine Struktur erwartet dies auch bleiben, obwohl sie nicht auf der (möglicherweise) unter Berufung verschleierten Namen „Mc“ und „L“. Hässlich, ich weiß, aber hoffentlich behebt Google dieses Problem bald.