2010-12-30 2 views
30

Так это текущий код у меня естьscrollTop jquery, прокрутка до div с идентификатором?

$(document).ready(function() { 
    $('.abouta').click(function(){ 
     $('html, body').animate({scrollTop:308}, 'slow'); 
     return false; 
    }); 
    $('.portfolioa').click(function(){ 
     $('html, body').animate({scrollTop:708}, 'slow'); 
     return false; 
    }); 
    $('.contacta').click(function(){ 
     $('html, body').animate({scrollTop:1108}, 'slow'); 
     return false; 
    }); 
}); 

При нажатии на ссылку, например, 'abouta' прокручивает этот раздел страницы. Я бы предпочел сделать scrollTo, а затем id div, чтобы мне не пришлось менять позицию scrollTo, если я меняю padding и т. Д. Есть ли способ? Благодаря

ответ

95

вместо

$('html, body').animate({scrollTop:xxx}, 'slow'); 

использование

$('html, body').animate({scrollTop:$('#div_id').position().top}, 'slow'); 

это вернет абсолютное верхнее положение любого элемента вы выбираете, как #div_id

+1

отлично работает, ура: D – Jake

+3

Я удивлен, что никто не прокомментировал так долго - вопрос как он утверждает, действительно ищет '.offset()', а не '.position()' как решение, не так ли? Целевой div может находиться где угодно на странице, а '.position()' [возвращает верхнее смещение относительно его контейнера) (http://api.jquery.com/position/). Таким образом, приведенный выше код перенесет вас в начало документа, если целевой div является первым дочерним элементом его родителя. Или я чего-то не хватает? – sameers

+0

Спасибо, Самерам, это именно то, что у меня было. .offset() работает. – Dan382

-2

, если вы хотите, чтобы просмотреть только лишь некоторые DIV , можно использовать div id вместо 'html, body'

$('html, body').animate(... 

использование

$('#mydivid').animate(... 
+3

Нет, '$ ('# div'). Animate ({scrollTop: $ ('# div'). Position(). Top}, 'slow');' не работает. (Chrome 23). Лучше использовать '$ ('html, body'). Animate ({scrollTop: $ ('# div_id'). Position(). Top}, 'slow');' – bicycle

0

попробовать это:

$('html, body').animate({scrollTop:$('#xxx').position().top}, 'slow'); 
$('#xxx').focus(); 
-2

попробовать это

$('#div_id').animate({scrollTop:0}, '500', 'swing'); 
Смежные вопросы