Javascript 相对于当前位置滚动Jquery

Javascript 相对于当前位置滚动Jquery,javascript,jquery,scroll,Javascript,Jquery,Scroll,我试图在使用jquery单击元素时相对于当前位置滚动div。但它必须在3000毫秒后滚动,所以试图延迟它。现在,单击后,它会立即相对于顶部滚动300 px。如果我再次点击,什么都不会发生 这是迄今为止的代码: $('#scroll').click(function(){ $('.vluchtelinginfo').delay(3000).scrollTop(+300); }); 谢谢你的帮助。这不是delay()的工作原理 在

我试图在使用jquery单击元素时相对于当前位置滚动div。但它必须在3000毫秒后滚动,所以试图延迟它。现在,单击后,它会立即相对于顶部滚动300 px。如果我再次点击,什么都不会发生

这是迄今为止的代码:

$('#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);});这是一个用词不当的问题-实际问题是关于计时,而不是关于滚动或定位这是一个用词不当-实际问题是关于计时,而不是关于滚动或定位