使用scrollTop锚链接阻止URL更新

时间:2014-04-30 11:02:00

标签: javascript scrolltop

我有以下JS,但我不希望使用哈希更新URL,我该如何防止这种情况?

我希望scrollTop适用于同一页面锚点链接以及链接到当前正常工作的其他页面上的ID。

var jump=function(e)
{
   if (e){
     e.preventDefault();
     var target = $(this).attr("href");
   } else {
     var target = location.hash;
   }

$('html,body').animate(
{
 scrollTop: $(target).offset().top
 }, 2000, function()
 {
   location.hash = target;
 });

}

$('html, body').hide();

$(document).ready(function()
{
  $('a[href^=#]').bind("click", jump);

if (location.hash){
    setTimeout(function(){
        $('html, body').scrollTop(0).show();
        jump();
    }, 0);
}else{
    $('html, body').show();
}
});

http://jsfiddle.net/3D4k9/

1 个答案:

答案 0 :(得分:0)

将window.location.hash =''添加到您的跳转功能:

... //previous code

window.location.hash = ''

... 

这将从导航栏中的网址中删除哈希

编辑:另外,在跳转功能的末尾添加“return false”。 这应该阻止事件传播和更改地址栏中的哈希