У меня есть класс в 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: он регистрирует это (мой объект) и событие карты Google. Но не в Safari или IE (а также в некоторых других версиях Firefox): он не вызывает метод onVehiculeClick, и если я добавляю console.log сразу после google.maps.event.addListener, ничего не выводится.
Если я удаляю часть .bind (this) , метод вызывается, но я теряю контекст this и this будет обозначать карту Google объект. Я также попытался добавить var, который = this в конструктор, но он не определен в контексте метода.
Я нашел кое-что, что, как мне кажется, могло бы помочь мне: Google Maps JS API v3: необходимо получить доступ к объекту маркера из обработчика событий , но он использует прототип, и я не могу найти никакого эквивалента метод карри в jQuery.
Спасибо за вашу помощь!