我想知道如何在滚动到另一个部分时更改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;
答案 0 :(得分:0)
您的意思是以下代码吗?
jQuery(document).ready(function() {
var hashString = '#yourHashString'
history.pushState('','', hashString);
});