Вложенный обработчик события jQuery onClick срабатывает несколько раз

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

Вызов модального и закрытие ist впоследствии приводит к многократному выполнению события #modalSubmitButton. Не могли бы вы придумать какое-нибудь решение, чтобы предотвратить такое поведение и запустить только фактическое событие, игнорируя предыдущие вызовы модального режима? Может быть, мой подход к вложению обработчиков неправильный?

Я уже перепробовал все комбинации event.stopPropagation / event.unbind(), так далее.

$(document).on('click', '#myModalID' function () {

    // i fetch some data from the clicked element here
    //  and make it accessible to the subsequent eventHandler

        $(document).on('click', '#modalSubmitButton' function () {

            // eventually calling service on click of button
            invokeService()
    });
});

1 ответ

Решение

Простое исправление: не вкладывайте обработчики событий. С реализацией делегированных обработчиков событий (которые вы уже используете) в этом нет необходимости.

$(document).on('click', '#myModalID' function () {
    // i fetch some data from the clicked element here
    //  and make it accessible to the subsequent eventHandler
});

$(document).on('click', '#modalSubmitButton' function () {
    // eventually calling service on click of button
    invokeService()
});
Другие вопросы по тегам