在jQuery中尝试在Google Maps Marker click事件回调中调用类方法

在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

我在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(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”仅在构造函数中可用。通过在方法中声明,它也可以在单击事件中使用。