Клуб API Карт

disable() и enable()

mouseseen
2 июня 2012, 09:38

Здравствуйте. Необходимо по клику на кнопке1 включить обработчик событий click2,а по клику на кнопке2 выключить его:

var click2 = new YMaps.Events.observe(overlays1, overlays1.Events.Load, function () {
overlays1.get(0).forEach(function (obj) {
var click1 = new YMaps.Events.observe(obj, obj.Events.Click, function (obj) {
var idObj = obj.id;
overlays1.get(0).remove(obj);
overlays1.remove(obj[0]);
YMaps.jQuery.ajax({
type: "POST",
url: "testurl.php",
data: "id="+idObj,
success: alert("Метка удалена")
});
/*return false;*/
});
});
});
click2.disable();
YMaps.jQuery("#button1").click(function(){
click2.enable();
});
YMaps.jQuery("# button2").click(function(){
click2.disable();
});

 Обработчик click2 влючается, но не выключается. Почему так?

5 комментариев
Подписаться на комментарии к посту

У вас происходит несколько событий Load?

 

overlays1.get(0).remove(obj);
overlays1.remove(obj[0]);

что это?

Событие load одно.

После удаления метки по клику из бд с помощью аяксового запроса, метка оставалась видна на карте, необходима была перезагрузка. Поэтому помог этот код, а никак иначе :(

overlays1.get(0).remove(obj);
overlays1.remove(obj[0]); 

Алгоритм такой: при удачной загрузке всех ymapsml данных, необходимо для каждой метки написать функцию добавления, редактирования, удаления. Все бы было просто сделать без аякса: три placemark_add.php, placemark_delete.php, placemark_update.php, то есть в три странички. Но было решено извернуться и сделать меню из трех кнопок, каждая из которых активирует и соответственно диактивирует события удаления, добавления или редактирования. Сейчас получилось сделать так: две кнопки для каждой функции, одна кнопка активирует, другая деактивирует: после overlays1.get(0).forEach(function (obj) {

 

YMaps.jQuery("#placemark_delete").click(function(){

 

    click1.enable();

 

});

 

YMaps.jQuery("#placemark_delete2").click(function(){

 

    click1.disable();

 

}); 

 

Но как-то это страшно выглядит :-$

 


 

при удачной загрузки всех ymapsml данных, необходимо для каждой метки написать функцию добавления, редактирования, удаления

а зачем добавление?

при загрузке вы их не добавляете?

 

 

все меточки выведены, просто функция добавления подразумевает добавление новой метки в бд по клику на карте

у вас click2 это обработчик загрузки всех меток

зачем его disabl-ить?