使用jquery滚动链接到#div以平滑滚动并保留网址

时间:2012-02-04 16:55:06

标签: jquery html

我有一个页面设计,使用此代码通过jquery轻松滚动:

function ScrollMe(id){
                var offset = $("#"+id).offset().top-50;
                $('html,body').animate({scrollTop: offset},'slow');
         };

这个html:

<a onclick="ScrollMe('about')"  href="javascript:void(0)">About</a>

工作正常,但我需要的是将href更改为“#about”,以便在点击链接时更新网址。在这种情况下,我只是不知道如何保持宽松。

由于

EDIT 所以对我来说这个作品足够好:

 <a href="#contact" onclick="return scrollMe('contact');">

3 个答案:

答案 0 :(得分:1)

快速而肮脏的方法是添加return:false;你的onclick:

<a onclick="ScrollMe('about');return false;" href="#about">About</a>

然而,更好的方法是改变它如下:

<a class="about" href="#about">About</a>

并将其添加到您的javascript:

jQuery(function($) {
    $(".about").click(
         function() {
             scrollMe('about');
             return false;
         }
    );
});

答案 1 :(得分:0)

<a href="#about" onClick="ScrollMe('about'); return false;">About</a>

那就可以了。

答案 2 :(得分:0)

为什么不简单地设置锚id正确设置href?像这样,例如:

<a href="#about" onclick="scrollMe('about'); return false;">About</a> 

这可以正确设置浏览器的位置,因此可以复制和传输它。但是如果你想在从另一个页面打开你的页面时播放动画,而不是这个,你应该在页面加载后调用像scrollMe(location.hash)这样的smth。

注意:location.hash可能会注意到某些浏览器的工作情况。