2010-07-12 2 views
6

У меня есть длинный список вложенных div. Я передаю идентификатор определенного элемента (фактически элемента абзаца) в querystring и открывая его div и parent onload. Однако список такой длинный, иногда раскрывающийся элемент скрывается под нижней частью окна.Прокрутите до конкретного элемента w/jQuery

Как автоматически прокручивать окно браузера пользователя, чтобы отображаемый элемент находился в верхней части экрана?

Вы, наверное, не нужно, но для записи ... мой список выглядит следующим образом:

<div id="div1"> 
    <p id="1"></p> 
    <div>stuff</div> 
    <p id="2"></p> 
    <div>stuff</div> 
    <p id="3"></p> 
    <div>stuff</div> 
</div> 
... 
<div id="divN"> 
    <p id="997"></p> 
    <div>stuff</div> 
    <p id="998"></p> 
    <div>stuff</div> 
    <p id="999"></p> 
    <div>stuff</div> 
</div> 
+3

Это не действует, чтобы начать свои идентификаторы с номером. – user113716

+4

Да, да ... это не настоящий код. : P – Bryan

ответ

12

Вы можете использовать функцию scrollIntoView.

$(document).ready(function() { 
    $('#divN').get(0).scrollIntoView(); 
}); 
+1

это будет работать кросс-браузер? –

+0

+1 на этот ответ, но с оговоркой, что он не прокручивает, если цель уже находится в поле зрения. @Russ - Это широко поддерживается моими знаниями. – user113716

+0

@ Russ: Я так не думаю, иначе это была бы довольно приятная функция. Но я действительно думаю, что это хорошо, чтобы быть правдой. Основная команда Resig & jQuery реализовала бы ее, если бы ее кроссбраузер. – jAndy

2

Самый простой способ сделать это с помощью Ariel Flesler's scrollTo plugin. Я использовал его несколько раз раньше, и он маленький, легкий и работает очень хорошо.

6

JQuery:

$(document).ready(function(){ 
    $(document.body).scrollTop($('#divN').offset().top); 
});