如何在滚动gt上更改URL哈希;

时间:2015-03-01 13:49:25

标签: jquery scroll

我想知道如何在滚动到另一个部分时更改URL栏中的哈希值。我使用以下代码更改视口中可见部分的菜单项类:

function setActiveListElements(event){         //从页面顶部获取窗口的偏移量         var windowPos = $(window).scrollTop();

    $('#primary-navwrapper li a[href^="#"]').each(function() { 
        var anchorId = $(this);
        var target = $(anchorId.attr("href"));
        //console.log(target);

        var offsetTop = target.position().top - offset;

        if (target.length > 0) {

            if (target.position().top - offset <= windowPos && (target.position().top + target.height() + offset ) > windowPos) {
                $('#primary-navwrapper li a').removeClass("current");
                anchorId.addClass("current");
            }
        }           

    });

}

当用户点击菜单项但我不知道如何将其集成到上面的代码中时,我已经使用代码来更新哈希值:

$('#primary-navwrapper li,.list-of-links li')。find('a [href ^ =“#”]')。click(function(event){         //阻止默认操作进行初始化         event.preventDefault();

    $('#primary-navwrapper li a').removeClass("current");
    $(this).addClass("current");

    var anchorId = $(this).attr("href");
    var target = $(anchorId).offset().top - offset;         
    //console.log(target);

    $('html, body').animate({ scrollTop: target }, 500, function () {
        window.location.hash = anchorId;        
    });

});

在上面的代码中我使用了:window.location.hash = anchorId;

1 个答案:

答案 0 :(得分:0)

您的意思是以下代码吗?

jQuery(document).ready(function() {
    var hashString = '#yourHashString'
    history.pushState('','', hashString);
});