0

На странице аяксом подгружаются новые элементы.

Поскольку js подгружается до того, как появятся новые элементы, то для новых элементов скрипты не выполняются.

Как сделать так, чтобы скрипты выполнялись для всех элементов? Может, обновить их как-то на странице?

Пробовал необходимый js-код выводить вместе с аяксом, но так как он выполняется на странице несколько раз, то и скрипт у меня прописывается так же.

А следовательно и выполняется несколько раз.

Нужно как-то по другому.

1
  • 1
    Попробуй вот [это][1]. А вообще, нужно проектировать заранее так, чтобы не было таких проблем. [1]: api.jquery.com/live
    – heleg
    1 сен 2014 в 13:28

1 ответ 1

3

Если вы используете jquery, то используйте .on() - современный аналог .live(). Если не используете, придется отлавливать момент создания новых элементов и заново привязывать все функции.

7
  • Я давно не смотрел обновления JQ, on() отныне следит за обновлением DOM?
    – heleg
    1 сен 2014 в 14:20
  • Да, действительно. .live работает. .on() - нет. 1 сен 2014 в 14:24
  • В новой - до 2 версии оба варианта работают. ПОсле 1.9 убрана в пользу on. ПРиведите пример кода, возможно, вы просто неправильно его используете.
    – knes
    1 сен 2014 в 14:36
  • установлен 1.8 1 сен 2014 в 18:54
  • 1
    @Радик Камалов on() работает так: $('selector or element').on('event','subselector',handler); т.е. у вас что-то такое: $('document').on('click','тут селектор как в live',function(){}); (вместо document лучше использовать контейнер в котором обновляются данные) .live() не используйте, он устарел много лет назад.
    – zb'
    2 сен 2014 в 5:52

Ваш ответ

By clicking “Отправить ответ”, you agree to our terms of service and acknowledge you have read our privacy policy.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками или задайте свой вопрос.