Как запустить функцию 1 раз

124
28 сентября 2019, 01:30

Есть функция прослушки DOM на изменение

$(document).ready(function() {
    $('#map').on('DOMSubtreeModified', function(event) {
        if (event.target.className == "ymaps-2-1-72-balloon__content") {
            imp();
        }
    });
});

В итоге DOMSubtreeModified находит изменение в 3х одинаковых классах и запускает функцию imp() 3 раза. А мне нужно запустить только 1 раз.

Пробовал event.target.className[0] не помогает.

Может return в нужном месте прекратить работу DOMSubtreeModified или есть какая служебная функция для остановки.

Answer 1

как сказали в комментариях, это событие – deprecated.

Решить проблему можно просто

let listener = function(event) {
        if (event.target.className == "ymaps-2-1-72-balloon__content") {
            imp();
            map.off('DOMSubtreeModified.EXAMPLE_NAMESPACE')
        }
    }
$(document).ready(function() {
    const map = $('#map')
    map.on('DOMSubtreeModified.EXAMPLE_NAMESPACE',listener);  
});

при необходимости заново навесить слушатель - вызываем в нужном месте опять конструкцию

map.on('DOMSubtreeModified.EXAMPLE_NAMESPACE',listener);

следует учитывать, что такое отключение событий отключит все слушатели DOMSubtreeModified, подписанные на namespace DOMSubtreeModified.EXAMPLE_NAMESPACE

неплохая статья - https://css-tricks.com/namespaced-events-jquery/

Answer 2

Оказалось, обработчик открытого балуна делается просто (умные люди подсказали).

myMap.balloon.open(coords, {
    //здесь доработать код вывода формы ввода
    contentBody: '<div id="forma"><button type="submit" class="btn btn-success">Сохранить</button></div>'
}).then(myfunc)
READ ALSO
Сколько места занимают индексы таблицы InnoDB в mySQL?

Сколько места занимают индексы таблицы InnoDB в mySQL?

Есть заполненная данными таблица InnoDB в mySQLДля таблицы заданы несколько индексов

135
Как сделать запрос в столбец при условии?

Как сделать запрос в столбец при условии?

Есть таблица dle_post, нужно вставить в столбец xfields значение при условии, что в category есть значение "1"Как организовать?

132