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>
    
Другие вопросы по тегам