使用window.location.hash时,平滑滚动工作不正确

时间:2014-09-02 07:17:49

标签: javascript jquery

我顺利滚动。但它的工作不正确。 它仅在您第二次按下时触发,但哈希值会立即在URL中更改。

$('nav').click(function(e){
        if(window.location.hash == "#block1") {
            $('html,body').animate({
                scrollTop: ($('#block1').offset().top)
            })
        }
        else if(window.location.hash == "#block2") {
            $('html,body').animate({
                scrollTop: ($('#block2').offset().top)
        })
        }
    })

1 个答案:

答案 0 :(得分:0)

您应该阻止点击事件的默认行为:

$('nav').click(function(e){
    e.preventDefault();
    //continue...

希望这有帮助。

编辑:

这应该可以解决问题:

$('nav').click(function(e){
    e.preventDefault();

    var section = $(this).attr('href');

    if(section == "#block1") {
        window.location.hash = "#block1";

        $('html,body').animate({
            scrollTop: ($('#block1').offset().top)
        });
    }
    else if(section == "#block2") {
        window.location.hash = "#block2";

        $('html,body').animate({
            scrollTop: ($('#block2').offset().top)
        });
    }
});

瓦列