jQuery scrollTop анимация при рендеринге HTML - PullRequest
0 голосов
/ 19 октября 2011

У меня запущен JQuery, и я хотел бы использовать анимацию scrollTop, чтобы переместить окно обратно вверх (около 240 пикселей, хотя и несколько переменно) в качестве обратного вызова вызова AJAX, который заменит большой кусок HTMLсодержание на странице.

Я использую:

$("html, body").animate({ scrollTop: someNumericalVariable });

Проблема, с которой я сталкиваюсь, заключается в том, что, когда этот код выполняется без задержки или тайм-аута, окно будет очень маленькимпрокрутка анимации до места, которое далеко не так, как хотелось бы.Когда я добавляю некоторую произвольную задержку (по крайней мере от 1 до нескольких секунд), окно может оказаться, а может и не оказаться в нужном месте, но анимация вряд ли является анимацией (она действует скорее как 2 отдельных вызова scrollTop - это будет быстропрыгайте вверх, подождите секунду, затем снова прыгайте вверх до нужного места).

Когда я запускаю код отдельно (не как обратный вызов в середине связки рендеринга HTML), анимация, кажется, работаетправильно.

Есть идеи?Заранее спасибо.

1 Ответ

0 голосов
/ 19 октября 2011

То, что вы хотите сделать, это анимировать позицию scrollTop () после завершения вызова ajax и обработки данных.Например:

$.ajax({
  url: "data.html",
  success: function(html) {
    $('#content').append(html); // process data first

    var someNumericalVariable = randomCalculation(); // do whatever calculation you need to do to figure out scrolltop
    $("html, body").animate({ scrollTop: someNumericalVariable }); // animate scrolltop
  }
});

Если что-то не работает для вас, напишите какой-нибудь код или создайте jsFiddle, и мы посмотрим, что происходит.

...