JQuery 滚动到滚动到下一个 DIV
JQuery scrollTo scrolls to the next DIV
我有以下函数:
function scrollToDiv(){
var str = '.' + window.location.href.split('#').pop();
$.scrollTo(str, {duration: 300});
}
它从www.example.com/#test
中提取test
并将str
设置为 .test
。但是,scrollTo() 在 <div class="test"></div>
之后滚动到div 。为什么?
更新:我注意到 offset().top 为每个div 显示错误的数字。
这是一个不必要的复杂函数。有一个名为 window.location.hash
的属性,它获得您想要的确切部分(即使你的那段代码运行良好)。类似且更有效的代码实现是:
function scrollToAnchor(place){
var cls = window.location.hash.replace("#", "."),
sel = $(cls + ":eq(" + place + ")");
place++;
$.scrollTo(sel, {duration: 300});
}
我添加了一个滚动到给定位置的place
参数(索引为 1 而不是 0,因为我递增变量以使其更易于理解)。请注意,我只是将 hash
属性值中的哈希符号替换为点,因为这是您需要的。我希望这对您有所帮助,如果您不了解我的更改,请告诉我。下面是使用此函数的完整 HTML 页面:
<!doctype html>
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script>
<script src="https://raw.github.com/flesler/jquery.scrollTo/master/jquery.scrollTo.min.js" type="text/javascript"></script>
<style type="text/css">
#something {
display: block;
margin-top: 800px;
}
</style>
</head>
<body>
<a class="something">Test</a>
<a class="something">Test</a>
<a class="something">Test</a>
<a class="something">Test</a>
<a class="something">Test</a>
<script type="text/javascript">
function scrollToAnchor(place){
var cls = window.location.hash.replace("#", "."),
sel = $(cls + ":eq(" + place + ")");
place++;
$.scrollTo(sel, {duration: 300});
}
scrollToAnchor(3);
</script>
</body>
</html>
本可以做一个小提琴或CodePen项目,但你需要传递一些东西作为哈希(显然),尝试用这样的编辑器进行模拟有点奇怪。只需将#something
传递给该HTML文件,它就会完成您的需求。
默认情况下,
浏览器通常会在 ID 上执行滚动到行为。因此,当您单击任何链接时,例如 http://example.com/#test ,任何像样的浏览器都会滚动到具有 id - test 的元素。尝试使用 id 而不是类。
相关文章:
- 如何确定滚动DIV中的可见DOM元素
- 如何获取滚动DIV中的当前活动文本
- 如何在没有滚动条的情况下滚动Div
- 使用纯 Javascript 滚动到可滚动 DIV 中的元素
- 滚动 DIV 元素的特定滚动条
- 鼠标滚轮滚动 DIV 元素
- 使用按钮和鼠标滚动 DIV
- 通过按钮可滚动 Div,没有滚动条
- jQuery滚动DIV是跳跃和定位错误
- 检查元素是否在溢出滚动DIV中完全可见
- 当我们滚动&Div来到Windows中间位置
- 加载数据时动态向下滚动DIV层
- CSS/JS -禁用点击事件,但允许滚动DIV
- 使用Javascript + Input type=range滚动Div
- 从任何地方滚动Div
- HTML / JS水平滚动DIV列表
- jQuery滚动Div高度
- 如何在没有Jquery的情况下将HTML5视频快照附加到滚动DIV
- 在RTL模式下获得可滚动DIV的视图的更好方法
- 暂停自动滚动Div