无论哪种情况(jQuery 或 vanilla 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;
});
jQueryanimate
提供了动画持续时间和缓动选项以及设置回调的能力。
香草 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; }
}
}