2014-11-05 2 views
1

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

Я использую это:

$(function(){ 
$('body').animate({ 
    scrollTop: $(":header3").offset().top 
}, 500); 
}); 

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

Однако прокрутки не происходит. Не знаете почему?

вот скрипку http://jsfiddle.net/xdaf7o3b/

+0

Вы уверены, что jquery поддерживает селектора типа this: header3? –

+0

http://api.jquery.com/header-selector/ – CuriousDev

+0

Правильно, но wtf есть ': header * 3 *'? –

ответ

1

Если вы хотите, чтобы перейти к третьему заголовку любого рода (h1, h2, h3, h4 и т. д.) на странице, попробуйте: eq селектор:

$(function(){ 
$('body').animate({ 
    scrollTop: $(":header:eq(2)").offset().top 
}, 500); 
}); 

Вот скрипка: http://jsfiddle.net/sifriday/xdaf7o3b/5/

И чтобы обеспечить достаточно мест в документе, чтобы правильно прокрутить окно просмотра прямо в заголовок вы хотите, вы можете сделать некоторые измерения и добавить отступы к содержащему DIV, если требуются:

var wh = $(window).height(); 
var dh = $(document).height(); 
var top = $(":header:eq(2)").offset().top 
if ((dh - top) < wh) { 
    $("#someDiv").css("padding-bottom", (wh - (dh - top)) + "px") 
} 

демо здесь: http://jsfiddle.net/sifriday/xdaf7o3b/6/

хороший тест для этого, чтобы попробовать его на 4-заголовке страницы, предназначалась здесь: http://jsfiddle.net/sifriday/xdaf7o3b/7/

+0

это не сработает, поскольку в HTML есть только один 'h3'. – prog1011

+0

Вопрос о получении третьего заголовка на странице, независимо от того, является ли он h1, h2 или h3. Я хотел показать пример используемого n-го ребенка, но вы правы, что, делая это с h3, неясно, что я пытаюсь сделать! Я буду обновлять для использования: заголовок – sifriday

+0

ahh и nth-child в любом случае ошибочны, так как есть другие элементы на том же уровне, что и заголовки, которые подсчитываются селектором nth-child. .eq - это тот! – sifriday

0

Заменить на: header3 использования h3

$(function(){ 
    $('body').animate({ 
     scrollTop: $("h3").offset().top 
    }, 500); 
}); 

Обновлено JsFiddle

0

Использование HTML БПК у селектора

$(function(){ 
$('html, body').animate({ 
    scrollTop: $("h3").offset().top 
    }, 800); 
}); 

здесь работает fiddle

0

Используйте ниже кодекса

$(function(){ 
$('body').animate({ 
    scrollTop: $("h3").offset().top 
}, 800); 
}); 
0

AFAIK там нет такого селектора в :header3. Вместо этого вы можете использовать :header:eq(2). Или просто h3.

$(function(){ 
$('body,html').animate({ 
    scrollTop: $(":header:eq(2)").offset().top 
}, 800); 
}); 

DemoDemo.

+0

Я думаю, что вы имели в виду eq (2). В любом случае, если вы видите свою демонстрацию, ваш код прокручивается до h4, но h4 не самый верхний элемент. Есть некоторые строки h3, также видимые. Как сделать h4 прокручивать верхнюю позицию? – CuriousDev

+0

Да, конечно, 'eq (2)'. Вы не можете прокручивать дальше, если попадете в нижнюю часть страницы. –

+0

Да, это не помогает моему делу. Кто-нибудь еще может подумать о каком-то общем решении? – CuriousDev

Смежные вопросы