是否可以使用HTML和/或Javascript自动计算下一页的锚点并跳转到它?
是否可以使用HTML和/或Javascript自动计算下一页的锚点并跳转到它?
假设您是相对于已知的锚点/项;如果您正在使用jQuery,则它们有一个名为“Next Sibling”的选择器;在此处查找文档:
http://api.jquery.com/next-siblings-selector/
我现在有点忙,否则我会为您建立完整的选择器,但如果您今天晚些时候没有答案,我会把它组合起来。
编辑
实际上,根据进一步阅读,我猜测您正在寻找相对于页面当前滚动位置的下一个锚点...这需要更多的工作...但是可以完成...(再次,我将尝试在今天晚些时候提供JS)。
编辑
这些不是100%完整的;但应该足以让您了解基本思路。如果您的页面是静态内容,则建议在文档准备就绪时遍历页面并缓存所有偏移量;确定元素的偏移量可能会非常慢(特别是在旧版浏览器中)。
var _anchorOffets = {};
$(document).ready(function () {
$("A[id]:not(A[href])").each(function (index, value) {
var $anchor = $(value);
_anchorOffets[$anchor.attr("id")] = $anchor.offset().top;
});
});
function getNextAnchorId() {
var $window = $(window);
var minOffset = $window.scrollTop() + $window.height();
for (var anchor in _anchorOffets) {
if (_anchorOffets[anchor] >= minOffset) {
return anchor;
}
}
return null;
}
或者,如果您的页面具有动态内容并且锚点位置不固定在文档中,则您需要考虑更接近于以下内容:
function getNextAnchorId() {
var result = null;
$("A[id]:not(A[href])").each(function (index, value) {
var $anchor = $(value);
var $window = $(window);
var minOffset = $window.scrollTop() + $window.height();
if($anchor.offset().top >= minOffset) {
result = $anchor.attr("id");
return false;
}
});
return result;
}
根据您的页面,您可能需要扩展这个想法。上述两种解决方案都假定文档布局相当基本。如果您使用相对/绝对位置或可滚动的div等进行任何高级操作,则需要加强此功能(如果需要,我可以提供代码)。不过,现在我假设我们正在谈论基本查找页面上的锚点,并根据滚动位置确定下一个锚点。另外,我没有进行彻底的测试,因此可能还需要一些改进:D
window.location.hash
来实现此目的。例如:alert(window.location.hash);
感谢大家的回答,但我通过实现http://marcgrabanski.com/articles/scrollto-next-article-button-jquery来使其工作。这个方法是通过跳转到下一个标题而不是下一个锚点来实现的,但我想如果必须使用锚点,它可以很容易地进行调整。
我想我明白你在寻找什么。如果你知道ID,你可以使用这个...
function Next(){
var lnkNext = document.getElementById("yourNextAnchorId");
window.location.href = lnkNext.src;
}