在加载时,跳转到div中的锚点

时间:2009-11-10 15:35:09

标签: javascript jquery html xhtml

假设我有以下页面:

<html>
<body>
<div id='foo' style='scroll:auto;height:400px'>
      // content, content, content...
      <div id='bar'></div>
      // content, content, content...
</div>
</body>
</html>

我可以使用什么jQuery(或vanilla Javascript),以便在页面加载时,它只跳转到#bar 只能在div#foo (而不是整个页面)中?我不需要花哨的动画或滚动,我只想让#bar在页面加载时位于div的顶部。

3 个答案:

答案 0 :(得分:7)

jQuery解决方案(假设所有元素都以某种方式定位)

$('#foo').scrollTop($('#bar').position().top);

修改

附注:如果您希望在padding-topbar之间放置一些空格,请务必在margin-top而不是foo设置bar

编辑 DOM解决方案(无论元素是否已定位,请参阅@cobbals回答jQuery等效项):

document.getElementById('foo').scrollTop += document.getElementById('bar').offsetTop - document.getElementById('foo').offsetTop

答案 1 :(得分:1)

$(document).ready(function() {
   $("#foo").scrollTop($("#foo #bar").position().top);
})

答案 2 :(得分:1)

漫长而笨拙,可能有一种方法可以缩短它,但每次都会到达正确的位置。

$("#foo").scrollTop($("#foo").scrollTop() +
                    $("#bar").offset().top -
                    $("#foo").offset().top);