You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在jQuery点击函数中添加延迟后执行滚动动画?

解决jQuery点击滚动前添加5秒延迟的问题

嘿,我来帮你搞定这个滚动延迟的问题~你之前用.delay()没生效,是因为这个方法默认只对jQuery的**动画队列(fx队列)**里的操作起效,而你原来的写法没把延迟和滚动动画绑定到同一个队列中。下面给你两种可行的解决方案:

方案1:用原生setTimeout(逻辑更直观,推荐)

直接用setTimeout把滚动动画的代码包起来,就能精准控制延迟时间:

$(".o-c").click(function(e) {
  // 阻止链接默认的锚点跳转行为,避免覆盖动画
  e.preventDefault();
  // 延迟5000毫秒(也就是5秒)后执行滚动动画
  setTimeout(() => {
    $('html, body').animate({ scrollTop: $(".one").offset().top }, 2000);
  }, 5000);
});

方案2:正确使用jQuery的.delay()

如果你更想用jQuery的方法,只要把延迟和动画链式调用在同一个元素上就行,因为.delay()只对后续的队列操作生效:

$(".o-c").click(function(e) {
  e.preventDefault();
  // 先延迟5秒,再执行滚动动画
  $('html, body').delay(5000).animate({ scrollTop: $(".one").offset().top }, 2000);
});

重要提醒:

不管用哪种方案,都要加上e.preventDefault()或者return false,因为你的链接有href="#one",浏览器默认会直接跳转到锚点位置,会直接打断你的滚动动画哦。

你的HTML和CSS代码不需要改动,只替换JavaScript部分就可以啦~

内容的提问来源于stack exchange,提问作者user38208

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:13:30