@neseti

Бесконечная прокрутка, подключенные скрипты не работают для подгружаемых постов, почему?

Я в теме не разбираюсь, поэтому очень прошу помочь. Заранее спасибо :)

К блогу на тумблере добавил вот этот скрипт для бесконечной прокрутки: static.tumblr.com/q0etgkr/EIBmz7s0p/infinitescroll... (работает)

Плюс я прикрепил несколько других скриптов: fotorama, shadowbox и т.д.

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

Что мне нужно изменить в скрипте, чтобы это исправить?

На stackoverflow есть несколько вопросов, где люди ходят вокруг этой темы (вот, например: stackoverflow.com/questions/4218377/tumblr-audio-p... но задачи у них другие, и я не могу применить их советы к своей ситуации (просто не понимаю, что нужно делать, хоть английский и знаю).

Может быть, ответы по ссылке наведут кого-нибудь на мысль?

Адрес блога, если нужно: feelbritish.tumblr.com
  • Вопрос задан
  • 2872 просмотра
Пригласить эксперта
Ответы на вопрос 3
@cybervito21
У меня была подобная штука с анимацией в jQuery - она просто вешала js обработчик на события, но события тех элементов которые были на момент вызова. То есть когда подгружались новые элементы - они были без обработчика.
Решал эту проблему навешиванием обработчика при каждой новой подгрузке данных.
Ответ написан
Комментировать
Jeiwan
@Jeiwan
После подгрузки новых элементов на них нужно заново инициализировать плагины. Если есть какие-то свои события, то их нужно устанавливать динамически (через api.jquery.com/on пример в самом низу). У некоторых плагинов есть опция динамического подключения новых элементов, у других плагинов есть метод для обновления. Конкретно про fotorama и shadowbox ничего сказать не могу. Возможно, в вашем случае достаточно заново инициализировать плагины после подгрузки данных.
Ответ написан
Комментировать
Как Jeiwan написал выше, вешайте события через метод jquery on. Изучите вот тут jquery.page2page.ru/index.php5/On делегированную обработку, это самый простой для новичка способ. Вы делаете конструкцию типа $('body').on('click', '.your-element', function(){}), и вместо body прописываете контейнер, в который подгружаются ваши новые элементы, а вместо your-element селектор элемента, который будет реагировать на событие (click). Без этого появляющиеся после ленивой загрузки посты не будут инициализированы.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы