在jQuery中尝试在Google Maps Marker click事件回调中调用类方法
我在jQuery中有一个类,它处理google地图及其标记。 创建每个标记后,我为每个标记添加一个单击侦听器:在jQuery中尝试在Google Maps Marker click事件回调中调用类方法,jquery,google-maps,maps,google-maps-markers,Jquery,Google Maps,Maps,Google Maps Markers,我在jQuery中有一个类,它处理google地图及其标记。 创建每个标记后,我为每个标记添加一个单击侦听器: var marker = new google.maps.Marker(options); google.maps.event.addListener(marker, "click", function(event) { //Do something with event }); 但是,我想改用类中的函数: google.maps.event.addListener(mark
var marker = new google.maps.Marker(options);
google.maps.event.addListener(marker, "click", function(event) {
//Do something with event
});
但是,我想改用类中的函数:
google.maps.event.addListener(marker, "click", this.onVehiculeClick.bind(this));
onVehiculeClick: function(event) {
console.log(this);
console.log(event);
//Do something with event
}
它在firefox和chrome上运行良好:它正在记录这个(我的对象)和谷歌地图事件。但不是在Safari或IE中(以及其他一些版本的Firefox):它不会调用onVehicleClick方法,如果我在google.maps.event.addListener之后添加console.log,则不会输出任何内容
如果删除.bind(this)部分,则会调用该方法,但会丢失this上下文,this将代表google地图对象。我还尝试在构造函数中添加一个var=this,但在方法上下文中它是未定义的
我发现了一些我认为可能对我有所帮助的东西:但它使用的是prototype,我在jQuery中找不到任何与curry方法等价的方法
谢谢你的帮助 尝试将AddVehicle方法更改为:
addVehicule: function(vehicule) {
try {
var marker = this.addMarker(vehicule.latitude, vehicule.longitude);
var that = this;
//Observe clicks on vehicule
google.maps.event.addListener(marker, "click", function(event){
that.onVehiculeClick(event)
});
this.vehicules.push(vehicule);
} catch (error) {}
}
你在用图书馆吗。IEI中本机不支持绑定。我只使用jQuery和jQuery继承,后面是完整的代码。你知道.bind有什么解决方法吗?或者我是否可以获得每个标记的id,这样我就可以使用jQuery绑定而不是Google的?我无法在2小时前回答自己的问题。我会稍后发布脚本。你可以在这里同时找到它:或者这是工作!非常感谢:)我尝试在构造函数方法中设置var that=this,然后使用与您相同的方法,但它不起作用。为什么我们必须在方法上下文中声明它?如果在构造函数中声明它,那么“that”仅在构造函数中可用。通过在方法中声明,它也可以在单击事件中使用。