Как сохранить обработчики событий jQuery после применения к элементу .wrap()?
Добрый день.
Написал вчера модуль для jQuery, чтобы переиспользовать на всех проектах.
Модуль создает модальные окна.
Принцип работы простой — выбранный блок оборачивается в обертку .Popup, через jQuery-метод "wrap".
Все работает, все круто
Обернул форму с полями и кнопкой.
На полях висят обработчики blur и change
На кнопке висит обработчик click и preventDefault
При клике в открытом модальном окне на кнопку — страница перезагружается.
Вычитал где-то, что при функции wrap создается клон выбранного элемента и все обработчики слетают
окей, но обработчики блюра на полях работают
Залез в jquery, нашел метод wrap
Он внутри использует jQuery-метод clone. В метод клон можно передать параметр, который отвечает за копирование обработчиков и всех свойств.
ПО дефолту стояло что-то непонятное, поставил true
Не ра бо та ет!!!
Зашел в браузер mozilla, он в девтулзах отображает обработчики, которые висят на элементах.
На кнопке висит мой единственный обработчик
если не вызывать форму моим плагином, кнопка работает
Объедениете и переносите все обработчики на самый верхний уровень на body и уже в зависимости от того, что внутри event.target запускать тот или иной скрипт.
Также можно не так радикально, просто вывести обработчики в соответствующие атрибуты у элементов.
Если ни тот, ни другой вариант не подходит, то попробовать уже самому написать функцию для обертывания с теми параметрами, которые нужны.