jquery: обработчик события заданный в подгружаемой странице срабатывает через раз

_savit
На сайте с 19.03.2006
Offline
136
1336

Всем привет.

Столкнулся с такой проблемой:

Итак, есть кнопка по нажатии на которую в определенный DIV загружается (с помощью ajax) страница, в которой так же присутствуют скрипты на jquery (допустим обработчик нажатия на некую ссылку из загружаемой страницы) ...

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

Жмем на кнопку очистки этого DIV ( empty)

Снова жмем первую кнопку, вновь загружается наша страница, но обработчик нажатия на ссылку уже не работает!!!!

Вновь жмем на кнопку очистки этого DIV ( empty)

Снова жмем первую кнопку, вновь загружается наша страница, и обработчик нажатия на ссылку вновь работает!

и так далее через раз ...

p.s естественно что если обработчик нажатия на кнопку прописать в основной странице, а не в подгружаемой, то все будет работать как надо ... но задача стоит так, чтобы он располагался именно в коде подгружаемой страницы.

Кто-нибудь сталкивался с подобным ... как победить?

https://vk-botovod.ru - комбайн ВКонтакте, мультимессенджер, эмулятор жизни аккаунтов
Joker-jar
На сайте с 26.08.2010
Offline
154
#1
если обработчик нажатия на кнопку прописать в основной странице, а не в подгружаемой, то все будет работать как надо

ИМХО, идеально вынести этот кода в отдельный js-файл, как и весь остальной js-код (по окончании ajax bind'ить событие)

LEOnidUKG
На сайте с 25.11.2006
Offline
1723
#2

Нужно смотреть код. Без него ничего не скажу. Единственное, что где-то что-то в кэш запоминается и всё.

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/
_savit
На сайте с 19.03.2006
Offline
136
#3

Вот что выяснилось: событие действительно срабатывало как надо ... вот только при повторной загрузке в DIV страницы, оно срабатывало уже 2 раза (!) ... обработчики событий у меня назначаются с помощью live, а unbind который я делал при каждой новой загрузке страницы их просто не прибивал ( оказывается в случае с live помогает только .die(), старый добрый unbind не пашет в таком случае ). Ну а так как обработчик нажатия на ссылку с помощью toggle скрывал/показывал div из загружаемой страницы, то при двойном вызове он соответственно ничего и не показывал/скрывал ... оттуда и взялась первоначальная мысль что обработчик повешанный на ссылку не срабатывает )))

dkameleon
На сайте с 09.12.2005
Offline
386
#4
_savit:
обработчики событий у меня назначаются с помощью live,

лайв не предназначен для подгрузки вместе с контентом.

его лучше раз подгрузить, а потом только контент грузить.

лайв будет автоматически цеплять ивенты.

если хотите скрипт грузить с контентом, то байнд

Дизайн интерьера (http://balabukha.com/)
_savit
На сайте с 19.03.2006
Offline
136
#5
dkameleon:
лайв не предназначен для подгрузки вместе с контентом.

его лучше раз подгрузить, а потом только контент грузить.
лайв будет автоматически цеплять ивенты.

если хотите скрипт грузить с контентом, то байнд

в этой задаче без .live не обойтись ... сам скрипт грузиться с другого домена и вставляет нужный контент в див ... простой бинд там не сработает, а live как раз то что нужно. Но как я уже написал проблема решается с помощью .die()

p.s всем принявшим участие в обсуждении большое спасибо!

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий