我目前有以下内容:
var scrollingAnchorIds = [];
var getTheseIds = $(".anchor-content").each(function() {
scrollingAnchorIds.push($(this).data('load-id'));
});
console.log(scrollingAnchorIds);
$(window).bind("load", function() {
if(document.URL.indexOf(scrollingAnchorIds[i]) >= 0){
$('html,body').animate({scrollTop: elementWithMatchingDataLoadIdGoesHere.offset().top - 50},850);
}
});
我获取每个 data-load-id 的值,将它们添加到数组中。现在我一直在检查页面何时加载,url 是否包含该哈希值,如果是,则滚动到具有匹配值的元素。
它将滚动到哪个元素的示例 html:
<div data-load-id="#83" class="anchor-content"></div>
<div data-load-id="#91" class="anchor-content"></div>
<div data-load-id="#99" class="anchor-content"></div>
最佳答案
仔细想想,你的大部分代码似乎都过多了。尝试这样的事情:
$(function(){
$('html,body').animate({scrollTop: $("[data-load-id='" + window.location.hash + "']").offset().top - 50},850);
});
我做了一个fiddle另外,尽管 window.location.hash 在此不起作用。
关于javascript - 页面加载时,如果 URL 哈希与数组中的值之一匹配,则滚动到具有匹配 data-load-id 属性的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33969310/