2013-02-23 72 views
1

我用这样的布局中的检查活跃格的onload

<nav id="main-nav"> 
    <a href="#link1">Link1</a> 
    <a href="#link2">Link2</a> 
    <a href="#link3">Link3</a> 
</nav> 
<div id="link1"> 
    some content goes here 
</div> 
<div id="link2"> 
    some content goes here 
</div> 
<div id="link3"> 
    some content goes here 
</div> 

所以,当我在一些导航链接点击向下滚动到正确的股利。事情是,NAV是一个固定的定位菜单,它使用顶部200px。 的JS我使用滚动是这样的:

$('#main-nav a').click(function(event) { 
    var nome = $(this).attr("href"); 
    $('html, body').animate({ 
     scrollTop: $(nome).offset().top-198 
    }, 1600); 
}); 

好了,所以有这个内部页面,获取导航链接变成:

<a href="http://www.mysite.com/#link1">Link1</a> 

的问题是,它加载了家还算可以,但在div从顶部开始,在NAV下(因为在加载页面时没有offset().top-198) 我认为我需要的是找到一种方法从加载并制作onLoadscrollTop的url中获取#link,是吗?

有帮助吗?

回答

1

您可以使用类似于下面的内容,在URL中查找当前的hashtag,然后将其与divs ID进行匹配,然后对该ID进行动画处理。

$(function(){ 
    currentPage = window.location.hash; 
    moveLink = $('div').find($(this).attr('id',currentPage)); 
    $('html, body').animate({ 
     scrollTop: $(moveLink).offset().top-198; 
    }); 
}); 

编辑---------------------------------------

var aniFunc = function(a){ 
    $('html, body').animate({ 
     scrollTop: $(a).offset().top-198; 
    }); 
}; 

$(document).ready(function(){ 
    currentPage = window.location.hash; 
    moveLink = $('div').find($(this).attr('id',currentPage)); 
    aniFunc(moveLink); 
} 

$('#main-nav a').click(function(event) { 
    nome = $(this).attr("href"); 
    aniFunc(nome); 
}); 
+0

谢谢你:) – user1576978 2013-02-24 00:15:29

+0

没问题..我希望它有帮助。 – dev 2013-02-24 00:15:54

+0

呃,acctualy,如果它不太多...当我点击主页上的链接时,它会给我一个奇怪的眨眼,如果你有任何想法:P – user1576978 2013-02-24 00:16:31

0

你可以intitially做这样的事情:

window.location.href.match('(#.*$)') 

,并触发在页面加载该元素的点击。