Javascript 相对于当前位置滚动Jquery
我试图在使用jquery单击元素时相对于当前位置滚动div。但它必须在3000毫秒后滚动,所以试图延迟它。现在,单击后,它会立即相对于顶部滚动300 px。如果我再次点击,什么都不会发生 这是迄今为止的代码:Javascript 相对于当前位置滚动Jquery,javascript,jquery,scroll,Javascript,Jquery,Scroll,我试图在使用jquery单击元素时相对于当前位置滚动div。但它必须在3000毫秒后滚动,所以试图延迟它。现在,单击后,它会立即相对于顶部滚动300 px。如果我再次点击,什么都不会发生 这是迄今为止的代码: $('#scroll').click(function(){ $('.vluchtelinginfo').delay(3000).scrollTop(+300); }); 谢谢你的帮助。这不是delay()的工作原理 在
$('#scroll').click(function(){
$('.vluchtelinginfo').delay(3000).scrollTop(+300);
});
谢谢你的帮助。这不是
delay()
的工作原理
在您的情况下,使用
setTimeout(function() {
$('.vluchtelinginfo').scrollTop(+300);
});
根据delay()
只有队列中的后续事件被延迟;例如,这将
不要延迟.show()或.hide()的无参数形式
使用效果队列
这不是
delay()
的工作方式
在您的情况下,使用
setTimeout(function() {
$('.vluchtelinginfo').scrollTop(+300);
});
根据delay()
只有队列中的后续事件被延迟;例如,这将
不要延迟.show()或.hide()的无参数形式
使用效果队列
你可以试试这样的
$("#scroll").click(function () {
setTimeout(function () {
$(".vluchtelinginfo").css("top", $(".vluchtelinginfo").offset().top + 300);
}, 3000);
});
你可以试试这样的
$("#scroll").click(function () {
setTimeout(function () {
$(".vluchtelinginfo").css("top", $(".vluchtelinginfo").offset().top + 300);
}, 3000);
});
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});
这将使上述原则发挥作用。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});
这使上述原则起作用。谢谢,这对我很有帮助。你对滚动还有什么想法吗?我现在的代码是:$('#scroll')。单击(function(){var delay=3000;setTimeout(function(){$('.vluchtelinginfo')。scrollTop(300);},delay);});谢谢,这帮了我的忙。你对滚动还有什么想法吗?我现在的代码是:$('#scroll')。单击(function(){var delay=3000;setTimeout(function(){$('.vluchtelinginfo')。scrollTop(300);},delay);});这是一个用词不当的问题-实际问题是关于计时,而不是关于滚动或定位这是一个用词不当-实际问题是关于计时,而不是关于滚动或定位