jQuery scrollTop не срабатывает

У меня есть такая разметка:

<div id="landing">
    <p>Ut in nulla enim. Phasellus molestie magna non est bibendum non venenatis nisl tempor. Suspendisse dictum feugiat nisl ut dapibus. Mauris iaculis porttitor posuere. Praesent id metus massa, ut blandit odio. Proin.</p>
</div>

<header id="header">
    <p>Ut in nulla enim. Phasellus molestie magna non est bibendum non venenatis nisl tempor. Suspendisse dictum feugiat nisl ut dapibus. Mauris iaculis porttitor posuere. Praesent id metus massa, ut blandit odio. Proin.</p>
    <p>Ut in nulla enim. Phasellus molestie magna non est bibendum non venenatis nisl tempor. Suspendisse dictum feugiat nisl ut dapibus. Mauris iaculis porttitor posuere. Praesent id metus massa, ut blandit odio. Proin.</p>
    <p>Ut in nulla enim. Phasellus molestie magna non est bibendum non venenatis nisl tempor. Suspendisse dictum feugiat nisl ut dapibus. Mauris iaculis porttitor posuere. Praesent id metus massa, ut blandit odio. Proin.</p>
</header>

И я пытаюсь сделать так, чтобы при щелчке элемента <p> в #landing jQuery прокручивал страницу до элемента #header.

Судя по документам jQuery, я бы предположил, что это будет так же просто, как:

$('#landing p').click(function() {
    $('#header').scrollTop(250);
});

Но это, похоже, вообще не работает. Кроме того, каждый другой поток, который я просматриваю (включая некоторые ответы на мои предыдущие/похожие потоки), который использует метод scrollTop, похоже, использует более сложный код. Тогда я подумал, может быть, мне нужно иметь что-то вроде этого:

$('#landing p').bind('click', function(e) {
    try {
        e.preventDefault();
        target = this.hash;
        $('#header').animate({
            scrollTop: 0
        }, 150);
    } catch (error) {
        alert('error - ' + error);
    }
});

Но и это не работает. Я не получаю сообщений об ошибках в консоли, но событие просто не запускается. Я протестировал его с помощью простого оператора предупреждения, который отлично работает, просто я не могу заставить его прокручиваться


person Community    schedule 13.04.2015    source источник
comment
не могли бы вы сделать скрипку для этого, чтобы мы могли вам помочь   -  person stanze    schedule 13.04.2015


Ответы (1)


Я думаю, вы могли бы искать что-то вроде этого?

$('#landing p').click(function(){
    var headerOffset=$('#header').offset();
    $('html,body').animate({
        scrollTop:headerOffset.top
    });
});
person Jared    schedule 13.04.2015
comment
это отлично работает, спасибо: D странно, что документы jQuery ничего не упоминают о том, что это работает так! По крайней мере, я так и не заметил - person ; 13.04.2015