javascript - 在非锚哈希链接上禁用平滑滚动?
问题描述
我有一些用于平滑滚动的 jquery:
$(document).on('click', 'a[href^="#"]', function (event) {
event.preventDefault();
$('html, body').animate({
scrollTop: $($.attr(this, 'href')).offset().top
}, 1400);
});
效果很好,除了我在页面上有一些标签也使用哈希链接。单击每个选项卡时,页面将滚动到屏幕顶部。
有没有办法让这个平滑滚动工作,只有当一个特定的锚被添加到散列(如/#features)时才工作,当它只是一个散列时(如/#)
解决方案
您可以添加一个:not()
选择器以消除href="#"
触发click
事件。
$(document).on('click', 'a[href^="#"]:not([href=#])', function(event) {
console.log("Clicked");
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a href="#">Hash Only</a>
<a href="#Anchor1">Anchor 1</a>
<a href="#Anchor2">Anchor 2</a>
推荐阅读
- python - pyaudio 有效,但输出播放时间少于实际时间
- regex - 如何在文件中格式化特定的替换?
- google-signin - 无法获取已注册的项目详细信息,谷歌开发者控制台
- python - 如何在 seaborn 图中显示多条线?
- android - 如何在没有密钥的情况下在android中解析JSONArray
- angular - 未捕获(承诺):错误:无法匹配任何路由。URL 段:应用程序
- python - openpyxl 不使用嵌套循环保存
- javascript - 在for循环中单击时如何禁用按钮单元?
- firebase - 试图通过用户 uid firebase 分离数据?
- symbolic-math - 在 Maxima 中使用letsimp进行简化,发生了什么?