无论是哪种情况(jQuery 或原生 JavaScript),您都需要执行以下操作:
- 选择
href 设置为#top 的所有锚标记
- 创建一个“跳转”函数,将页面位置设置为顶部并返回
false以防止默认链接行为
- 将“跳转”函数绑定到找到的所有节点的
click 事件
要跳跃,您有多种选择。我在下面的第一个示例中提供了它们(特定于 jQuery 和 JS)。
使用 jQuery
jQuery 使选择和绑定到click 事件变得容易。然后您可以使用 jQuery 或直接 JavaScript 跳转到页面顶部。
$('a[href="#top"]').click(function() {
//
// To jump, pick one...
//
// Vanilla JS Jump
window.scroll(0,0)
// Another Vanilla JS Jump
window.scrollTo(0,0)
// jQuery Jump
$('html,body').scrollTop(0);
// Fancy jQuery Animated Scrolling
$('html,body').animate({ scrollTop: 0 }, 'slow');
//
// ...then prevent the default behavior by returning false.
//
return false;
});
jQuery 的animate 提供动画持续时间和缓动选项以及设置回调的功能。
原版 JavaScript
你也可以在整个过程中使用 Vanilla JS……但是,查询和绑定变得有点痛苦。
现代浏览器支持document.querySelectorAll(),这将允许您像使用 jQuery 一样抓取所有链接元素:
var links = document.querySelectorAll('a[href="#top"]');
然后循环遍历元素并绑定“跳转”:
for (var i = links.length - 1; i >= 0; i--) {
links[i].onclick = function() { window.scroll(); return false; };
};
如果您的目标浏览器没有为您提供querySelectorAll,您只需遍历所有锚标记以查找链接到#top 的标记:
var links = document.body.getElementsByTagName('a');
for (var i = links.length - 1; i >= 0; i--) {
var l = links[i];
if(l.getAttribute('href') === '#top') {
l.onclick = function() { window.scroll(); return false; }
}
}