У меня есть система нумерации страниц, как это:

[content]
1 2 3 Next >

Когда вы нажимаете 1/2/3 / далее, элемент [content] заменяется через ajax.

Проблема в том, что фокус экрана перемещается вверх, если новая высота [содержимого] больше предыдущей.

Можно заставить экран оставаться сфокусированным там, где находятся ссылки на страницы?

7
Alex 6 Июл 2010 в 17:04

3 ответа

Лучший ответ

Вам нужно найти положение элемента и прокручивать его до каждого изменения высоты. Что-то типа:

var p = $(".links").position();
$(window).scrollTop(p.top);
10
Luca Matteis 6 Июл 2010 в 13:07

Возможно, вы можете исправить это без jQuery или javascript ... Просто создайте именованный якорь, где вы хотите, чтобы верхняя часть страницы находилась после того, как пользователь нажимает навигационные ссылки, вставьте имя якоря в идентификатор фрагмента навигационных ссылок, и не отменяйте событие, поэтому страница переходит на якорь.

<a name="contentTop"></a>

[content]

<a href="#contentTop" onclick="nextPage(); return true;">Next</a>
0
Dagg Nabbit 6 Июл 2010 в 13:26

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

var before = $(".links").offset().top;

Затем, после загрузки нового контента, получите новую высоту ссылки.

var after = $(".links").offset().top;

Затем сделайте математику, чтобы узнать, насколько она перемещена.

var difference = after - before

И обновите местоположение прокрутки вашего окна соответственно

$(window).scrollTop( $(window).scrollTop() + difference )
0
Daniel Von Fange 6 Июл 2010 в 13:24