jQuery бесконечная прокрутка заставляет ссылки временно не работать?
Пару недель назад я реализовал бесконечную прокрутку страницы с помощью jquery. Сама прокрутка работает отлично, но я получаю очень странный побочный эффект.
Когда я прокручиваю и новый контент загружается, ни одна из ссылок не работает в течение первых нескольких секунд. Фактически, никакие ссылки на странице не работают в течение пары секунд. И, кажется, еще хуже, если я прокручиваю действительно очень далеко, например, загружаю 5 страниц в быстрой последовательности - тогда мне придется подождать 20 секунд, прежде чем любая из ссылок в любой части страницы станет кликабельной.
У меня такой же опыт использования Firefox или IE8, поэтому я предполагаю, что это не браузер.
Есть идеи, что является причиной или исправлением?
1 ответ
Все еще есть эта проблема?
Вопросы:
- Через 20 секунд после загрузки страницы ссылки кликабельны? Браузер "завис" на 20 секунд или это просто ссылки, на которые нельзя кликнуть?
- Чтобы загрузить больше контента, это ссылка с надписью "показать больше" или контент автоматически загружается, когда пользователь попадает в нижнюю часть страницы?
- Используете ли вы jscuery.scroll() для обновления содержимого?
Начальные мысли:
- Используете ли вы.click() или.bind ('click', function) для ссылок, которые нельзя кликнуть? Попробуйте вместо этого.live ('click', function).
Попробуйте использовать setTimeout. Для некоторых браузеров jQuery.scroll вызывает функцию-обработчик каждый пиксель полосы прокрутки изменяется... не один раз, когда выполняется прокрутка, что может вызвать перегрузку вызова функции. Попробуйте что-то вроде этого сделать так, чтобы при прокрутке он не выполнял 1000 вызовов функций (это всего лишь быстрый пример... код мог бы быть лучше):
<script type="text/javascript"> var scrolling = false; $(document).scroll('setScroll'); function setScroll() { scrolling = setTimeout(doScrollUpdate, 300); } function doScrollUpdate() { clearTimeout(scrolling); // Do your ajax stuff here } </script>