Функция все еще работает, даже если она вызвала другую функцию - PullRequest
0 голосов
/ 15 января 2019

У меня есть код

function Search(){
    clean_map();
    $("#CS").modal('hide');
    prov = $('#Prov').val();
    map.on('zoomend', function(){
        myZoomHandler(prov);
    });

}

function myZoomHandler(prov) {
    clean_map();
    var currentZoom = map.getZoom();
    switch (currentZoom) {
        case 1:
        case 2:
        case 3:
        case 4:
        case 5:
        case 6:
        case 7:
            clean_map();
            mapProv(prov);
            break;
        case 8:
        case 9:
        case 10:
        case 11:
        case 12:
        case 13:
        case 14:
        case 15:
        case 16:
        case 17:
        case 18:
        case 19:
        case 20:
            clean_map();
            mapKab(prov);
            break;
        default:
            break;
    }
}

function SearchPer(){
    $('#P').modal('hide');
    clean_map();

    $.ajax({
        type : "get",
        data : { id : $('#Per').val() },
        url  : "getKab",
        dataType : "json",
        success: function(responsePer){
            GetName(responsePer, $('#Per').val());
        },
        error: function(error){
            console.log(error);
        }
    });
    return false;
}

Если я сначала вызываю функцию Search (), а затем вызываю функцию SearchPer(), все идет как положено, но если я сначала вызываю SearchPer(), а затем я вызываю Search(), возникает проблема, которая заключается в этом часть функции Search():

map.on('zoomend', function(){
myZoomHandler(prov);
}); 

который все еще работает.

Как остановить эту часть, когда вызывается SearchPer()?

1 Ответ

0 голосов
/ 15 января 2019

Переместите zoomend обработчик событий из функции Search в место, где вы инициализируете карту. Как всякий раз, когда вы запускаете Search это будет и новый обработчик событий

Обновление

Как я вижу, вы определили переменную prov где-то во внешней области видимости, поэтому обработчик zoomend должен быть расположен в этой области, чтобы использовать ее из замыкания.

Таким образом, когда срабатывает событие zoomend, оно получает prov значение, которое в данный момент существует

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...