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

JavaScript实现鼠标悬停中心元素时暂停外圈自动旋转的问题

问题修复方案

问题1:悬停时多移动一次才暂停

原因:触发hover清除定时器时,可能已有一次movetheone调用在队列中等待,或是当前动画已启动。需要在hover时不仅清定时器,还要立刻停止当前动画,确保外圈马上停在当前位置。

问题2:鼠标移出后无法恢复自动旋转

原因:移出回调里只写了movetheone,这只是函数引用没有实际执行;而且之前的定时器已被清除,必须重新创建定时器实例才能继续自动旋转。

修改后的代码

function movetheone() {
  i.is(":animated") || (p.direction = "right", p.step = d, o())
}
let abc = setInterval(movetheone, 3000);

$('.circle--rotate').hover(() => {
  clearInterval(abc);
  // 停止当前动画并清空队列,确保立刻暂停在当前位置
  i.stop(true, false);
}, () => {
  // 重新创建定时器
  abc = setInterval(movetheone, 3000);
  // 可选:移出后立刻执行一次移动,若想等3秒再动可删除这行
  movetheone();
})

额外说明

  • i.stop(true, false):第一个参数true清空动画队列,阻止后续等待的动画;第二个参数false不让当前动画跳转到结束状态,保证外圈停在当前显示的元素上。
  • 移出时重新赋值abc = setInterval(...)是因为旧定时器已失效,必须重新创建才能恢复自动旋转逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 19:40:57