@naneri
PHP разработчик.

Как предотвратить scrollup после AJAX запроса?

Возникла проблема.

Есть страничка, в которой выводятся темки. Для рендеринга применяется JS библиотека isotope. Новые темки добавляются аякс запросом (он сразу выдаёт весь HTML). До этого была простая пагинация.

Проблема в том, что после завершения AJAX запроса - страница автоматом скроллится к началу.

Update

Обновление происходит при скролле вниз, когда страница заканчивается (как на фэйсбуке, вконтакте, pinterest и т.д.)

Вот сам аякс запрос на обновление контента:
// Функция AJAX запроса
            function getData() {

                // Формируется POST запрос к ajax.php
                $.post('index/ajax', {
                    action: 'scrollpaginationtop',
                    number: $settings.nop,
                    offset: offset,
                    page: page,
                }, function(data) {

                    // Информируем пользователя
                    $this.find('.loading-bar').html($initmessage);

                    // Если возвращенные данные пусты то сообщаем об этом	
                    if (data == "") {
                        $this.find('.loading-bar').html($settings.error);
                    }
                    else {
                        page++;
                        // Смещение увеличивается
                        offset = offset + $settings.nop;

                        // Добавление полученных данных в DIV content
                        $this.find('.list-topic').append(data);

                        // Процесс завершен	
                        busy = false;
                        
                        $container.isotope('destroy');
                        setTimeout(function(){
                            $container.isotope({
                                itemSelector: '.item',
                                //resizable : false,
                                animationEngine: 'css',
                                masonry: {
                                    columnWidth: getUnitWidth()
                                }
                            });
                        },100);
                    }
                });
            }
  • Вопрос задан
  • 3138 просмотров
Пригласить эксперта
Ответы на вопрос 3
IonDen
@IonDen
JavaScript developer. IonDen.com
Скорее всего вы загружаете новый контент при клике на ссылку? В href стоит #? Самый простой способ предотвратить это:
<a href="javascript:void(0);></a>
или на jQuery:
$("a.link").on("click", function (e) {
    e.preventDefault();
    //... другой код
});
Ответ написан
GM2mars
@GM2mars
Каким образом добавляется новый контент к текущему? Случайно нигде не кликается ссылка, даже с хешом?
Да и в isotop'e по умолчанию не должно скроллится.
Я когда делал динамическую подгрузку, наоборот решал проблему, при смене контента нужно было принудительно скроллировать вверх.
Ответ написан
@koshkinmyshkin
Если запрос формируется модулем view Друпала, то в нем реализован принудительный скроллинг к началу view в функции viewsScrollTop в ajax_view.js
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы