gpt4 book ai didi

javascript - 完全删除 GoogleMaps 自动完成的正确方法是什么?

转载 作者:数据小太阳 更新时间:2023-10-29 04:36:51 24 4
gpt4 key购买 nike

我使用 GoogleMap v3 AutoComplete我需要完全删除它并取消绑定(bind)所有事件监听器。我的初始化和绑定(bind)事件的代码如下所示:

var autocomplete = new google.maps.places.Autocomplete($("input").get(0), {
types: ["geocode"]
});

google.maps.event.addListener(autocomplete, 'place_changed', function () {
// handle events
});

我没有找到正确删除自动完成和取消绑定(bind)所有事件的官方方法。请指出正确的方法。

谢谢。

最佳答案

对于事件的解除绑定(bind)使用google.maps.event.clearInstanceListeners .

对于删除自动完成功能,没有实现的方法。您可以在创建 Automplete 之前创建输入的克隆,并且当您想要删除自动完成功能时,将当前输入替换为克隆。

//--------------------------------------------------------------
//this overides the built-in Autocomplete and adds a remove-listener
//execute it once when the API has been loaded
(function(ac) {
google.maps.places.Autocomplete = function(node, opts) {
var clone = node.cloneNode(true),
pac = new ac(node, opts);

google.maps.event
.addListener(pac,
'remove',
function(restore) {
google.maps.event.clearInstanceListeners(pac);
google.maps.event.trigger(node,'blur');
google.maps.event.clearInstanceListeners(node);
if (restore===true) {
node.parentNode.replaceChild(clone, node);
} else {
node.parentNode.removeChild(node)
}
});
return pac;

}
}
(google.maps.places.Autocomplete));
//--------------------------------------------------------------------------

function initialize() {

autocomplete = new google.maps.places
.Autocomplete(document.getElementsByTagName('INPUT')[0], {
types: ["geocode"]
});
}

google.maps.event.addDomListener(window, 'load', initialize);
<script src="https://maps.googleapis.com/maps/api/js?v=3&libraries=places&.js"></script>
<input/>
<span>
<input type="button" value="remove input"
onclick="google.maps.event.trigger(window.autocomplete,'remove');
this.parentNode.parentNode.removeChild(this.parentNode);"/>
<input type="button" value="remove autocomplete-functionality"
onclick="google.maps.event.trigger(window.autocomplete,'remove',true);
this.parentNode.parentNode.removeChild(this.parentNode);"/>
<span>

该脚本向 Automplete 的添加了一个 remove-listener。监听器接受一个参数。当您只想删除自动完成功能时,将其设置为 true。否则输入将被完全删除。

关于javascript - 完全删除 GoogleMaps 自动完成的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28442571/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com