turkish777
@turkish777
junior frontend

Как сохранить обработчики событий jQuery после применения к элементу .wrap()?

Добрый день.
Написал вчера модуль для jQuery, чтобы переиспользовать на всех проектах.
Модуль создает модальные окна.
Принцип работы простой — выбранный блок оборачивается в обертку .Popup, через jQuery-метод "wrap".
Все работает, все круто
Обернул форму с полями и кнопкой.
На полях висят обработчики blur и change
На кнопке висит обработчик click и preventDefault

При клике в открытом модальном окне на кнопку — страница перезагружается.
Вычитал где-то, что при функции wrap создается клон выбранного элемента и все обработчики слетают
окей, но обработчики блюра на полях работают

Залез в jquery, нашел метод wrap
Он внутри использует jQuery-метод clone. В метод клон можно передать параметр, который отвечает за копирование обработчиков и всех свойств.
ПО дефолту стояло что-то непонятное, поставил true

Не ра бо та ет!!!

Зашел в браузер mozilla, он в девтулзах отображает обработчики, которые висят на элементах.
На кнопке висит мой единственный обработчик

если не вызывать форму моим плагином, кнопка работает

Помогите, я вспотел:))
  • Вопрос задан
  • 53 просмотра
Пригласить эксперта
Ответы на вопрос 1
zkrvndm
@zkrvndm
Архитектор решений
Объедениете и переносите все обработчики на самый верхний уровень на body и уже в зависимости от того, что внутри event.target запускать тот или иной скрипт.

Также можно не так радикально, просто вывести обработчики в соответствующие атрибуты у элементов.

Если ни тот, ни другой вариант не подходит, то попробовать уже самому написать функцию для обертывания с теми параметрами, которые нужны.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы