Клуб API Карт

Как удалить обработчик события click карты?

Sithis.the-nightbringer
16 мая 2015, 22:11

Прошу помощи в решении следующей проблемы:

Это обработчик события нажатия кнопки:

addButton.events.add('select', function () {
theMap.cursors.push('crosshair');
theMap.events.add('click', function (e) {//это обработчик события click карты
if (!theMap.balloon.isOpen()) {
if ($('#addformdiv[display=none]')) $('#addformdiv').slideDown("slow");
var coords = e.get('coordPosition');
theMap.balloon.open(coords, {
'Координаты объекта: ' + [

coords[0].toPrecision(6),
coords[1].toPrecision(6)
].join(', ')

});
}
else {
theMap.balloon.close();
}
});
});
addButton.events.add('deselect', function () {
if ($('#addformdiv[display!=none]')) $('#addformdiv').slideUp("slow");
theMap.events.remove('click', <имя функции>); //а вот здесь мне нужно обработчик события click карты удалить
theMap.cursors.push('arrow');
});

 

Проблема состоит в том, что функция анонимная, и я не могу передать ее имя методу remove() в качестве параметра. Как следует поступить в этом случае? Заранее благодарю за помощь.

 

P. S. Такая тема не раз создавалась, однако ни одно из найденных решений, увы, не сработало.

6 комментариев

Сделайте не анонимную

Sithis.the-nightbringer
17 мая 2015, 13:55

theMap.events.add('click', function OnClick(e) {//это обработчик события click карты

Вот так пробовал, не работает.

addButton.events.add('deselect', function () {
                if ($('#addformdiv[display!=none]')) $('#addformdiv').slideUp("slow");
                theMap.cursors.push('arrow');
                theMap.events.remove('click', OnClick);
            });

ReferenceError: OnClick is not defined



Функция OnClick будет видна только в том scope в котором она создана (внутри обработчика "click" кнопки)

 

https://developer.mozilla.org/en-US/docs/Glossary/Scope

Sithis.the-nightbringer
17 мая 2015, 22:48

Логично, только об этом мне Firebug сообщил. А я прошу совета на тему того, как эту функцию надо определить, чтобы работал метод remove именно в этом контексте.

Не могли бы вы привести пример кода, который решает мою проблему, если вас это не затруднит?

Sithis.the-nightbringer
18 мая 2015, 00:01

Решил проблему. Еще раз благодарю за помощь.

Sithis.the-nightbringer
18 мая 2015, 00:04