我正在尝试更改“下一个”按钮的href,以便单击它将继续将用户移动到博客页面上的下一个锚点。由于用户可以滚动而不使用下一个按钮,因此每当滚过一个锚点时,href都需要更改。该按钮相对于窗口定位固定,因此保持可见。
令人沮丧的是,我收到了不一致的结果-第一次向下滚动页面时,链接更新为#post-1和#post-2,但是post-2似乎没有更新href到#post-3。然后,post-3将href更新为#post-4(该位置不存在,但这暂且不提)。但是,从底部向上滚动时,post-2突然起作用,而其他位置则不起作用。以下是相关代码:
HTML:
您可以在这里查看我的实时代码(它在右下角,是向下的箭头):www.zaplings.com/blog
感谢您的帮助。
令人沮丧的是,我收到了不一致的结果-第一次向下滚动页面时,链接更新为#post-1和#post-2,但是post-2似乎没有更新href到#post-3。然后,post-3将href更新为#post-4(该位置不存在,但这暂且不提)。但是,从底部向上滚动时,post-2突然起作用,而其他位置则不起作用。以下是相关代码:
HTML:
<span id="post-0" class="anchor"></span>
<div class="row blog-page">
<a href="#post-1" id="blog-next">
<i class="blog-arrow fa fa-chevron-down"></i>
</a>
</div>
<span id="post-1" class="anchor"></span>
<div class="row blog-page">
<h3>header</h3>
</div>
<span id="post-2" class="anchor"></span>
<div class="row blog-page">
<h3>header</h3>
</div>
<span id="post-3" class="anchor"></span>
<div class="row blog-page">
<h3>header</h3>
</div>
JS:
<script type="text/javascript">
$(document).ready(function(){
$(function () {
var nextHash = 0;
$(document).scroll(function () {
$('.anchor').each(function () {
var top = window.scrollY;
var distance = top - $(this).offset().top;
var hash = parseInt($(this).attr('id').slice(5));
if (distance < 30 && distance > -30 && nextHash != hash) {
nextHash = hash + 1;
document.getElementById('blog-next').setAttribute('href', '#post-' + nextHash);
}
});
});
});
});
</script>
您可以在这里查看我的实时代码(它在右下角,是向下的箭头):www.zaplings.com/blog
感谢您的帮助。
scroll
事件时要小心。该事件会频繁触发,可能会影响页面性能。请参考http://ejohn.org/blog/learning-from-twitter/。 - Chad Killingsworth