2013-05-08 131 views
1

我有一个页面的网站导航,允许用户滚动到页面的不同部分。当用户点击一个链接时,URL的哈希值也会随着用户滚动页面而改变。我遇到的唯一问题是,如果用户位于顶部并单击链接跳转到页脚,那么在不同部分跳过时散列会发生变化,因此在最终到达页脚之前快速突出显示与所选状态的导航链接。有没有一种方法可以在页面滚动到页脚时禁用hashchange功能?停止滚动直到滚动

$(window).on('hashchange', function(){ 
    var id = window.location.hash.substring(1); 
    $('#header ul li').removeClass('selected'); 
    $('[data-rel="'+id+'"]').addClass('selected'); 
}); 
+0

这将有助于如果你可以建立一个小的小提琴 – 2013-05-08 08:17:01

+0

这'$(“[数据相对=‘‘+ ID +’’]”)'是超级慢 – fmsf 2013-05-08 08:18:36

+0

所以它跳到点击的部分通过动画? – 2013-05-08 09:26:31

回答

0

您的回答是否。如果用户想要更改URL的哈希值,他将始终能够。 你可以做的是禁止所有链接:

$('a').click(function() { return false; }); // disables 
$('a').unbind('click'); // enables them again 
1

所以,你应该用

$('a').click(function (e) { 
    e.preventDefault(); 
} 

和运行自己的代码。这应该工作,如果我已经正确理解你?

http://jsfiddle.net/FnfgJ/1/