相对于当前位置 Jquery 滚动
Scroll relative to current position Jquery
在使用jquery单击元素时,我正在尝试相对于其当前位置滚动div。但它必须在 3000 毫秒后滚动,所以试图延迟它。现在,单击后,它会相对于顶部立即滚动 300 像素。如果我再次单击,则没有任何反应。
这是到目前为止的代码:
$('#scroll').click(function(){
$('.vluchtelinginfo').delay(3000).scrollTop(+300);
});
感谢您的帮助。
Brad M关于使用setTimeout
的建议是获得所需内容的一种方法。 scrollTop()
没有列在jQuery提供的"效果"中,因此不会受到delay()
的影响,因为delay()
只影响效果。
但是,可以使用animate()
来制作滚动效果,例如,以下内容应为滚动设置动画:
$scrollable.animate({scrollTop: x});
由于animate()
是一种"效果",因此应该受到delay()
的影响。所以你可以做:
$scrollable.delay(3000).animate({scrollTop: x});
但是,您遇到了另一个问题:当调用scrollTop(x)
时x
是绝对值,而不是相对值。调用scrollTop(+300)
与调用scrollTop(300)
完全相同。+
符号在这种情况下没有特殊含义。如果您希望滚动是相对的,则需要首先获取上一个 scrollTop 值,并向其添加要滚动的相对距离。例如
$scrollable.delay(3000).animate({scrollTop: $scrollable.scrollTop() + 300});
这个小提琴使上述原则发挥作用。
这不是
delay()
的工作方式。
在您的情况下,请使用
setTimeout(function() {
$('.vluchtelinginfo').scrollTop(+300);
});
根据delay()
的文档
只有队列中的后续事件才会延迟;例如,这将 不延迟 .show(( 或 .hide(( 的无参数形式,它们不会 使用效果队列。
你可以尝试这样的事情...
$("#scroll").click(function () {
setTimeout(function () {
$(".vluchtelinginfo").css("top", $(".vluchtelinginfo").offset().top + 300);
}, 3000);
});
相关文章:
- jQuery滚动功能只工作一次
- jQuery滚动器插件修改
- 当元素可见时,jQuery滚动函数会触发一次
- jQuery滚动到聊天框底部
- 如何发现用户是否使用jQuery滚动到HTML容器的末尾
- 使用 jQuery 滚动窗格
- jQuery 滚动到锚点适用于移动设备,但不适用于桌面
- JQuery 滚动列表框模仿键盘导航
- JQuery 滚动到锚点行为奇怪
- jquery滚动功能无法正常工作
- JQuery滚动到底部
- 使用jQuery滚动获取距窗口顶部的距离
- jQuery滚动&锚初始位置
- 如何使用jQuery滚动到页面顶部
- 核心滚动标题面板+jQuery滚动
- iOS jquery滚动视图插件不会在iframe上滚动y
- 取消弹出jquery滚动事件
- jQuery滚动力不会滚动超过450px
- jQuery滚动出现问题
- Jquery滚动到基于数据属性的部分