jquery - .animate 和 .offset 在 jQuery 脚本中不起作用
问题描述
我正在使用这个小 jQuery 脚本:
$(document).on('click', 'a[href^="#"]', function (event) {
event.preventDefault();
$('html, body').animate({
scrollTop: $( $.attr(this, 'href') ).offset().top-128
}, 500);
});
使用 jQuery v. 3.5.1。jQuery 可以正常工作,因为我还有其他工作脚本。控制台为空,没有错误。我的脚本应该动画滚动到从顶部偏移的锚点。这个脚本有什么问题?
解决方案
您正在尝试滚动到单击链接的父级。您必须href
从单击的链接中获取 并滚动到具有该 ID 的元素。
$(document).on('click', 'a[href^="#"]', function (event) {
event.preventDefault();
$('html, body').animate({
scrollTop: $( $.attr(this, 'href') ).offset().top-128
}, 500);
});
你可以看到它在这里工作:
$(document).on('click', 'a[href^="#"]', function (event) {
event.preventDefault();
$('html, body').animate({
scrollTop: $( $.attr(this, 'href') ).offset().top-128
}, 500);
});
.bigblock {height:500px;}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div>
<a href="#div1">go to 1</a> <a href="#div2">go to 2</a> <a href="#div3">go to 3</a>
<div class="bigblock" id = "div1">Block 1</div>
<div class="bigblock" id = "div2">Block 2</div>
<div class="bigblock" id = "div3">Block 3</div>
</div>
推荐阅读
- javascript - Chrome onMessage 响应发送过早
- neo4j - 在 Neo4j 中创建面向未来的无术语关系是否有最佳方法?
- r - 乘矩阵 R
- node.js - 为机器人调试 JS
- wordpress - 在 WordPress 中保存用户类别
- heroku - 您将 Procfile 放在 JAR 部署中的什么位置?
- android-studio - 在 Android Studio 中键入会产生 3 个引号而不是 2 个
- python - PyTorch CNN 由于内存消耗过多而无法初始化
- javascript - 尝试修改随机化 javascript 以适应不同的屏幕宽度
- .net - 使用 Okta 授权外部 API 调用